<?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>65203</bug_id>
          
          <creation_ts>2011-07-26 12:54:18 -0700</creation_ts>
          <short_desc>[skia] never draw with GDI, so that all text can be gpu-accelerated</short_desc>
          <delta_ts>2011-09-06 12:22:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>
          <dependson>65226</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike Reed">reed</reporter>
          <assigned_to name="Mike Reed">reed</assigned_to>
          <cc>alokp</cc>
    
    <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>podivilov</cc>
    
    <cc>senorblanco</cc>
    
    <cc>tonyg</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>442470</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-26 12:54:18 -0700</bug_when>
    <thetext>[skia] never draw with GDI, so that all text can be gpu-accelerated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442479</commentid>
    <comment_count>1</comment_count>
      <attachid>102045</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-26 13:03:33 -0700</bug_when>
    <thetext>Created attachment 102045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442529</commentid>
    <comment_count>2</comment_count>
      <attachid>102052</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-26 14:27:31 -0700</bug_when>
    <thetext>Created attachment 102052
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442544</commentid>
    <comment_count>3</comment_count>
      <attachid>102054</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-26 14:45:50 -0700</bug_when>
    <thetext>Created attachment 102054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442553</commentid>
    <comment_count>4</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-26 14:56:21 -0700</bug_when>
    <thetext>don&apos;t understand the style complaint. check-webkit-style passes locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442627</commentid>
    <comment_count>5</comment_count>
      <attachid>102054</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-26 17:02:59 -0700</bug_when>
    <thetext>Comment on attachment 102054
Patch

(Did you upload the patch with &apos;webkit-patch upload&apos;? If yes, not sure what&apos;s going on with the style bot either.)

Looks fine to me as long as it&apos;s been tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442671</commentid>
    <comment_count>6</comment_count>
      <attachid>102054</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 18:10:18 -0700</bug_when>
    <thetext>Comment on attachment 102054
Patch

Clearing flags on attachment: 102054

Committed r91805: &lt;http://trac.webkit.org/changeset/91805&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442672</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-26 18:10:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442729</commentid>
    <comment_count>8</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-07-26 20:46:53 -0700</bug_when>
    <thetext>Rolled out: http://trac.webkit.org/changeset/91822

This change looks like it breaks the tests listed below.  In particular, the @ symbol is missing the bottom part of its glyph, which is why I rolled this change out rather than just marking them as failures.

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#master=ChromiumWebkit&amp;tests=css1/color_and_background/background_attachment.html,editing/selection/end-of-document.html,fast/blockflow/japanese-ruby-horizontal-bt.html,fast/css/first-letter-capitalized.html,fast/css/font-face-implicit-local-font.html,fast/css/line-height-determined-by-primary-font.html,fast/dom/HTMLMeterElement/meter-boundary-values.html,fast/dom/dom-parse-serialize-display.html,fast/dom/dom-parse-serialize.html,fast/images/image-map-anchor-children.html,fast/ruby/nested-ruby.html,fast/text/atsui-negative-spacing-features.html,fast/text/backslash-to-yen-sign-dynamic.html,fast/text/backslash-to-yen-sign-euc.html,fast/text/backslash-to-yen-sign.html,fast/text/international/003.html,fast/text/international/bidi-LDB-2-CSS.html,fast/text/international/bidi-LDB-2-HTML.html,fast/text/international/bidi-LDB-2-formatting-characters.html,fast/text/international/bidi-european-terminators.html,fast/text/international/bidi-mirror-he-ar.html,fast/text/international/hindi-spacing.html,fast/text/international/hindi-whitespace.html,fast/text/international/khmer-selection.html,fast/text/justify-ideograph-leading-expansion.html,fonts/monospace.html,fonts/sans-serif.html,fonts/serif.html,http/tests/uri/css-href.php,svg/batik/text/verticalText.svg,svg/zoom/page/zoom-mask-with-percentages.svg,tables/mozilla/bugs/bug1828.html,tables/mozilla/bugs/bug20804.html,tables/mozilla/bugs/bug2479-3.html,tables/mozilla/bugs/bug2479-4.html,tables/mozilla/other/wa_table_tr_align.html,tables/mozilla_expected_failures/bugs/bug1055-2.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442854</commentid>
    <comment_count>9</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-27 05:03:37 -0700</bug_when>
    <thetext>required skia DEPS did *not* land yesterday (grrr). rev. 60 is required for this (among other things, it fixes the @). Working on that DEPS roll now...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443574</commentid>
    <comment_count>10</comment_count>
      <attachid>102272</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-28 11:25:15 -0700</bug_when>
    <thetext>Created attachment 102272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443602</commentid>
    <comment_count>11</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-07-28 12:15:19 -0700</bug_when>
    <thetext>new patch just rebaselines the code after syncing, and tweaks the expectations file now that the skia 1960 expectations have been added (by a previous cl).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444096</commentid>
    <comment_count>12</comment_count>
      <attachid>102272</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-07-29 14:17:14 -0700</bug_when>
    <thetext>Comment on attachment 102272
Patch

OK, let&apos;s try again.

I&apos;m CC&apos;ing the current WebKit gardener in case more breakage is introduced by this patch. Mike, please keep an eye on the canaries (http://build.chromium.org/p/chromium.webkit/console).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444141</commentid>
    <comment_count>13</comment_count>
      <attachid>102272</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 15:18:11 -0700</bug_when>
    <thetext>Comment on attachment 102272
Patch

Clearing flags on attachment: 102272

Committed r92022: &lt;http://trac.webkit.org/changeset/92022&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>444142</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-29 15:18:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445074</commentid>
    <comment_count>15</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2011-08-01 18:42:40 -0700</bug_when>
    <thetext>I reverted this patch due to a lot of chromium win tests failing.

The script doesn&apos;t finish, so I manually reopen this bug.

The reverting patch is r92150.

Here are some logs.

XP failures

   http://build.chromium.org/p/chromium/builders/XP%20Tests%20%28dbg%29%282%29/builds/9330/steps/browser_tests/logs/stdio
   http://build.chromium.org/p/chromium/builders/XP%20Tests%20%28dbg%29%283%29/builds/9888/steps/browser_tests/logs/stdio
   http://build.chromium.org/p/chromium/builders/XP%20Tests%20%28dbg%29%284%29/builds/8610/steps/browser_tests/logs/stdio
   http://build.chromium.org/p/chromium/builders/XP%20Tests%20%28dbg%29%285%29/builds/6299/steps/browser_tests/logs/stdio
   http://build.chromium.org/p/chromium/builders/XP%20Tests%20%28dbg%29%286%29/builds/2969/steps/browser_tests/logs/stdio

Vista bots failed exact the same tests

interactive tests

   http://build.chromium.org/p/chromium/builders/Interactive%20Tests%20%28dbg%29/builds/13437/steps/interactive_ui_tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456903</commentid>
    <comment_count>16</comment_count>
      <attachid>105198</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-08-25 09:19:03 -0700</bug_when>
    <thetext>Created attachment 105198
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457017</commentid>
    <comment_count>17</comment_count>
      <attachid>105198</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-08-25 11:30:42 -0700</bug_when>
    <thetext>Comment on attachment 105198
Patch

r=me, but what if anything has changed since the last attempt to land this patch which will prevent the test failures seen the last time?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457533</commentid>
    <comment_count>18</comment_count>
      <attachid>105198</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 06:13:04 -0700</bug_when>
    <thetext>Comment on attachment 105198
Patch

Clearing flags on attachment: 105198

Committed r93870: &lt;http://trac.webkit.org/changeset/93870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457534</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-26 06:13:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457577</commentid>
    <comment_count>20</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-08-26 09:26:38 -0700</bug_when>
    <thetext>Reverted r93870 for reason:

Broke i18n chromium tests

Committed r93881: &lt;http://trac.webkit.org/changeset/93881&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462559</commentid>
    <comment_count>21</comment_count>
      <attachid>106424</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-09-06 08:49:12 -0700</bug_when>
    <thetext>Created attachment 106424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462568</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 09:00:03 -0700</bug_when>
    <thetext>Attachment 106424 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Last 3072 characters of output:
://src.chromium.org/svn/trunk/src/media@99393
    parsed_url: http://src.chromium.org/svn/trunk/src/media@99393
    should_process: True
    processed: True
    requirements: set([&apos;./&apos;])
  
    name: build
    url: http://src.chromium.org/svn/trunk/src/build@99393
    parsed_url: http://src.chromium.org/svn/trunk/src/build@99393
    should_process: True
    processed: True
    requirements: set([&apos;./&apos;])
  
    name: net
    url: http://src.chromium.org/svn/trunk/src/net@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: tools/data_pack
    url: http://src.chromium.org/svn/trunk/src/tools/data_pack@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: third_party/ffmpeg
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/ffmpeg&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: tools/generate_stubs
    url: http://src.chromium.org/svn/trunk/src/tools/generate_stubs@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: third_party/libjpeg_turbo
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/libjpeg_turbo&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/v8-i18n
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/v8-i18n&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: tools/grit
    url: http://src.chromium.org/svn/trunk/src/tools/grit@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: base
    url: http://src.chromium.org/svn/trunk/src/base@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: sql
    url: http://src.chromium.org/svn/trunk/src/sql@99393
    should_process: True
    requirements: set([&apos;./&apos;])
  
    name: v8
    url: From(&apos;chromium_deps&apos;, &apos;src/v8&apos;)
    should_process: True
    requirements: set([&apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: testing/gtest
    url: From(&apos;chromium_deps&apos;, &apos;src/testing/gtest&apos;)
    should_process: True
    requirements: set([&apos;testing&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/libwebp
    url: http://src.chromium.org/svn/trunk/src/third_party/libwebp@99393
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;./&apos;])
  
    name: googleurl
    url: From(&apos;chromium_deps&apos;, &apos;src/googleurl&apos;)
    should_process: True
    requirements: set([&apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/skia/include
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/skia/include&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/ots
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/ots&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])
  
    name: third_party/snappy/src
    url: From(&apos;chromium_deps&apos;, &apos;src/third_party/snappy/src&apos;)
    should_process: True
    requirements: set([&apos;third_party&apos;, &apos;chromium_deps&apos;, &apos;./&apos;])

Died at Tools/Scripts/update-webkit-chromium line 80.
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462596</commentid>
    <comment_count>23</comment_count>
      <attachid>106429</attachid>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-09-06 09:36:04 -0700</bug_when>
    <thetext>Created attachment 106429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462601</commentid>
    <comment_count>24</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-09-06 09:42:04 -0700</bug_when>
    <thetext>fixed floating accents by negating dv in GOFFSET array to match skia&apos;s Y-is-down convention.

fixed justified text by passing justify advances to skia.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462644</commentid>
    <comment_count>25</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-06 10:45:09 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; fixed floating accents by negating dv in GOFFSET array to match skia&apos;s Y-is-down convention.
&gt; 
&gt; fixed justified text by passing justify advances to skia.

Sounds good. Were you able to reproduce the i18n test failures locally to verify that your latest patch fixes them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462664</commentid>
    <comment_count>26</comment_count>
    <who name="Mike Reed">reed</who>
    <bug_when>2011-09-06 11:02:29 -0700</bug_when>
    <thetext>Indeed, that is the floating-accents part of the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462682</commentid>
    <comment_count>27</comment_count>
      <attachid>106429</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-06 11:18:16 -0700</bug_when>
    <thetext>Comment on attachment 106429
Patch

OK. r=me again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462737</commentid>
    <comment_count>28</comment_count>
      <attachid>106429</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 12:21:58 -0700</bug_when>
    <thetext>Comment on attachment 106429
Patch

Clearing flags on attachment: 106429

Committed r94589: &lt;http://trac.webkit.org/changeset/94589&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462738</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-06 12:22:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102045</attachid>
            <date>2011-07-26 13:03:33 -0700</date>
            <delta_ts>2011-07-26 14:27:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65203-20110726160332.patch</filename>
            <type>text/plain</type>
            <size>2580</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNzc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDctMjYgIE1pa2UgUmVl
ZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAgICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdE
SSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gZXhpc3Rpbmcg
dGVzdHMgYXBwbHkgdG8gdGhlIG5ldyBkcmF3aW5nIHBhdGgKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFp
bnRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFk
b3cpOgorCiAyMDExLTA3LTI2ICBWaWV0LVRydW5nIEx1dSAgPHZpZXR0cnVuZ2x1dUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW1wcm92ZSAoaS5lLiwgc3BlZWQgdXApIC5neXAoaSkgZmlsZXMg
Zm9yIENocm9taXVtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDkx
NzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDYgKzI2Nyw3IEBAIGJvb2wgVHJh
bnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXcKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCisgICAgU2tBU1NFUlQoISJob3cgZGlkIHdlIGdldCBoZXJlIik7CiAgICAgaWYgKCFt
X2dyYXBoaWNzQ29udGV4dCB8fCAhbV9oZGMpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFG
b250V2luLmNwcAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0
U2hhZG93KEdyYXBoaWNzQ29udGV4dCAqY29udGV4dCkKIHsKKyAgICByZXR1cm4gZmFsc2U7CiAg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwpAQCAtNTYsNiArNTcsNyBAQCBib29sIHdpbmRvd3NDYW5IYW5kbGVE
cmF3VGV4dFNoYWRvdyhHcmFwCiAKIGJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCkKIHsKKyAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCF3
aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KGNvbnRleHQpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTY4LDYgKzcwLDcgQEAgYm9vbCB3aW5kb3dzQ2FuSGFuZGxl
VGV4dERyYXdpbmcoR3JhcGhpYwogCiBib29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dp
dGhvdXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQogeworICAgIHJldHVybiBmYWxz
ZTsKICAgICAvLyBDaGVjayBmb3Igbm9uLXRyYW5zbGF0aW9uIHRyYW5zZm9ybXMuIFNvbWV0aW1l
cyB6b29tcyB3aWxsIGxvb2sgYmV0dGVyIGluCiAgICAgLy8gU2tpYSwgYW5kIHNvbWV0aW1lcyBi
ZXR0ZXIgaW4gV2luZG93cy4gVGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHpvb21pbmcKICAgICAv
LyBpbiB1c2luZyBTa2lhIHdpbGwgc2hvdyB5b3UgdGhlIGhpbnRlZCBvdXRsaW5lcyBmb3IgdGhl
IHNtYWxsZXIgc2l6ZSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102052</attachid>
            <date>2011-07-26 14:27:31 -0700</date>
            <delta_ts>2011-07-26 14:45:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65203-20110726172730.patch</filename>
            <type>text/plain</type>
            <size>28334</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNzc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDctMjYgIE1pa2UgUmVl
ZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAgICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdE
SSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gZXhpc3Rpbmcg
dGVzdHMgYXBwbHkgdG8gdGhlIG5ldyBkcmF3aW5nIHBhdGgKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFp
bnRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFk
b3cpOgorCiAyMDExLTA3LTI2ICBWaWV0LVRydW5nIEx1dSAgPHZpZXR0cnVuZ2x1dUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW1wcm92ZSAoaS5lLiwgc3BlZWQgdXApIC5neXAoaSkgZmlsZXMg
Zm9yIENocm9taXVtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDkx
NzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTQgKzYyLDggQEAgYm9vbCBjYW52
YXNIYXNNdWx0aXBsZUxheWVycyhjb25zdCBTa0NhbgogY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVG
b250UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcihH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgflRyYW5zcGFyZW5jeUF3
YXJlRm9udFBhaW50ZXIoKTsKIAogcHJvdGVjdGVkOgotICAgIC8vIENhbGxlZCBieSBvdXIgc3Vi
Y2xhc3MnIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgR0RJIGlmIG5lY2Vzc2FyeS4gVGhpcwot
ICAgIC8vIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGNhbGxlZCBhZnRlciB0
aGUgc3ViY2xhc3MgZmluaXNoZXMKLSAgICAvLyBjb25zdHJ1Y3Rpb24gKGl0IGNhbGxzIHZpcnR1
YWwgZnVuY3Rpb25zKS4KLSAgICB2b2lkIGluaXQoKTsKLQogICAgIHZpcnR1YWwgSW50UmVjdCBl
c3RpbWF0ZVRleHRCb3VuZHMoKSA9IDA7CiAKICAgICAvLyBVc2UgdGhlIGNvbnRleHQgZnJvbSB0
aGUgdHJhbnNwYXJlbmN5IGhlbHBlciB3aGVuIGRyYXdpbmcgd2l0aCBHREkuIEl0CkBAIC03OCwy
MCArNzIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIG1fcGxh
dGZvcm1Db250ZXh0OwogCiAgICAgRmxvYXRQb2ludCBtX3BvaW50OwotCi0gICAgLy8gU2V0IHdo
ZW4gV2luZG93cyBjYW4gaGFuZGxlIHRoZSB0eXBlIG9mIGRyYXdpbmcgd2UncmUgZG9pbmcuCi0g
ICAgYm9vbCBtX3VzZUdESTsKLQotICAgIC8vIFRoZXNlIG1lbWJlcnMgYXJlIHZhbGlkIG9ubHkg
d2hlbiBtX3VzZUdESSBpcyBzZXQuCi0gICAgSERDIG1faGRjOwotICAgIFRyYW5zcGFyZW5jeVdp
biBtX3RyYW5zcGFyZW5jeTsKLQotcHJpdmF0ZToKLSAgICAvLyBDYWxsIHdoZW4gd2UncmUgdXNp
bmcgR0RJIG1vZGUgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNwYXJlbmN5V2luIHRvIGhlbHAKLSAg
ICAvLyB1cyBkcmF3IEdESSB0ZXh0LgotICAgIHZvaWQgaW5pdGlhbGl6ZUZvckdESSgpOwotCi0g
ICAgYm9vbCBtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXllcjsgIC8vIFdlIGNyZWF0ZWQgYSBsYXll
ciB0byBnaXZlIHRoZSBmb250IHNvbWUgYWxwaGEuCiB9OwogCiBUcmFuc3BhcmVuY3lBd2FyZUZv
bnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwKQEAgLTk5LDkwICs3OSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6
OlRyYW5zcGFyZW4KICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3Bs
YXRmb3JtQ29udGV4dChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkKICAgICAsIG1fcG9pbnQo
cG9pbnQpCi0gICAgLCBtX3VzZUdESSh3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoY29udGV4
dCkpCi0gICAgLCBtX2hkYygwKQotICAgICwgbV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIoZmFs
c2UpCiB7CiB9CiAKLXZvaWQgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5pdCgpCi17
Ci0gICAgaWYgKG1fdXNlR0RJKQotICAgICAgICBpbml0aWFsaXplRm9yR0RJKCk7Ci19Ci0KLXZv
aWQgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5pdGlhbGl6ZUZvckdESSgpCi17Ci0g
ICAgbV9ncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICBTa0NvbG9yIGNvbG9yID0gbV9wbGF0
Zm9ybUNvbnRleHQtPmVmZmVjdGl2ZUZpbGxDb2xvcigpOwotICAgIC8vIFVzZWQgb25seSB3aGVu
IG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyIGlzIHRydWUuCi0gICAgZmxvYXQgbGF5ZXJBbHBo
YSA9IDAuMGY7Ci0gICAgaWYgKFNrQ29sb3JHZXRBKGNvbG9yKSAhPSAweEZGKSB7Ci0gICAgICAg
IC8vIFdoZW4gdGhlIGZvbnQgaGFzIHNvbWUgdHJhbnNwYXJlbmN5LCBhcHBseSBpdCBieSBjcmVh
dGluZyBhIG5ldwotICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXIgd2l0aCB0aGF0IG9wYWNp
dHkgYXBwbGllZC4gV2UnbGwgYWN0dWFsbHkgY3JlYXRlCi0gICAgICAgIC8vIGEgbmV3IHRyYW5z
cGFyZW5jeSBsYXllciBhZnRlciB3ZSBjYWxjdWxhdGUgdGhlIGJvdW5kaW5nIGJveC4KLSAgICAg
ICAgbV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIgPSB0cnVlOwotICAgICAgICBsYXllckFscGhh
ID0gU2tDb2xvckdldEEoY29sb3IpIC8gMjU1LjBmOwotICAgICAgICAvLyBUaGUgY29sb3Igc2hv
dWxkIGJlIG9wYXF1ZSBub3cuCi0gICAgICAgIGNvbG9yID0gU2tDb2xvclNldFJHQihTa0NvbG9y
R2V0Uihjb2xvciksIFNrQ29sb3JHZXRHKGNvbG9yKSwgU2tDb2xvckdldEIoY29sb3IpKTsKLSAg
ICB9Ci0KLSAgICBUcmFuc3BhcmVuY3lXaW46OkxheWVyTW9kZSBsYXllck1vZGU7Ci0gICAgSW50
UmVjdCBsYXllclJlY3Q7Ci0gICAgaWYgKG1fcGxhdGZvcm1Db250ZXh0LT5pc0RyYXdpbmdUb0lt
YWdlQnVmZmVyKCkpIHsKLSAgICAgICAgLy8gQXNzdW1lIGlmIHdlJ3JlIGRyYXdpbmcgdG8gYW4g
aW1hZ2UgYnVmZmVyIHRoYXQgdGhlIGJhY2tncm91bmQKLSAgICAgICAgLy8gaXMgbm90IG9wYXF1
ZSBhbmQgd2UgaGF2ZSB0byB1bmRvIENsZWFyVHlwZS4gV2UgbWF5IHdhbnQgdG8KLSAgICAgICAg
Ly8gZW5oYW5jZSB0aGlzIHRvIGFjdHVhbGx5IGNoZWNrLCBzaW5jZSBpdCB3aWxsIG9mdGVuIGJl
IG9wYXF1ZQotICAgICAgICAvLyBhbmQgd2UgY291bGQgZG8gQ2xlYXJUeXBlIGluIHRoYXQgY2Fz
ZS4KLSAgICAgICAgbGF5ZXJNb2RlID0gVHJhbnNwYXJlbmN5V2luOjpUZXh0Q29tcG9zaXRlOwot
ICAgICAgICBsYXllclJlY3QgPSBlc3RpbWF0ZVRleHRCb3VuZHMoKTsKLSAgICAgICAgbV9ncmFw
aGljc0NvbnRleHQtPmNsaXAobGF5ZXJSZWN0KTsKLSAgICAgICAgaWYgKG1fY3JlYXRlZFRyYW5z
cGFyZW5jeUxheWVyKQotICAgICAgICAgICAgbV9ncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIobGF5ZXJBbHBoYSk7Ci0KLSAgICAgICAgLy8gVGhlIHRyYW5zcGFyZW5jeSBo
ZWxwZXIgcmVxdWlyZXMgdGhhdCB3ZSBkcmF3IHRleHQgaW4gYmxhY2sgaW4KLSAgICAgICAgLy8g
dGhpcyBtb2RlIGFuZCBpdCB3aWxsIGFwcGx5IHRoZSBjb2xvci4KLSAgICAgICAgbV90cmFuc3Bh
cmVuY3kuc2V0VGV4dENvbXBvc2l0ZUNvbG9yKGNvbG9yKTsKLSAgICAgICAgY29sb3IgPSBTa0Nv
bG9yU2V0UkdCKDAsIDAsIDApOwotICAgIH0gZWxzZSBpZiAobV9jcmVhdGVkVHJhbnNwYXJlbmN5
TGF5ZXIgfHwgY2FudmFzSGFzTXVsdGlwbGVMYXllcnMobV9wbGF0Zm9ybUNvbnRleHQtPmNhbnZh
cygpKSkgewotICAgICAgICAvLyBXaGVuIHdlJ3JlIGRyYXdpbmcgYSB3ZWIgcGFnZSwgd2Uga25v
dyB0aGUgYmFja2dyb3VuZCBpcyBvcGFxdWUsCi0gICAgICAgIC8vIGJ1dCBpZiB3ZSdyZSBkcmF3
aW5nIHRvIGEgbGF5ZXIsIHdlIHN0aWxsIG5lZWQgZXh0cmEgd29yay4KLSAgICAgICAgbGF5ZXJN
b2RlID0gVHJhbnNwYXJlbmN5V2luOjpPcGFxdWVDb21wb3NpdGVMYXllcjsKLSAgICAgICAgbGF5
ZXJSZWN0ID0gZXN0aW1hdGVUZXh0Qm91bmRzKCk7Ci0gICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0
LT5jbGlwKGxheWVyUmVjdCk7Ci0gICAgICAgIGlmIChtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXll
cikKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KGxheWVyQWxwaGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENvbW1vbiBjYXNlIG9mIGRy
YXdpbmcgb250byB0aGUgYm90dG9tIGxheWVyIG9mIGEgd2ViIHBhZ2U6IHdlCi0gICAgICAgIC8v
IGtub3cgZXZlcnl0aGluZyBpcyBvcGFxdWUgc28gZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBz
cGVjaWFsLgotICAgICAgICBsYXllck1vZGUgPSBUcmFuc3BhcmVuY3lXaW46Ok5vTGF5ZXI7Ci0g
ICAgfQotCi0gICAgLy8gQnVnIDI2MDg4IC0gaW5pdCgpIG1pZ2h0IGZhaWwgaWYgbGF5ZXJSZWN0
IGlzIGludmFsaWQuIEdpdmVuIHRoaXMsIHdlCi0gICAgLy8gbmVlZCB0byBiZSBjYXJlZnVsIHRv
IGNoZWNrIGZvciBudWxsIHBvaW50ZXJzIGV2ZXJ5d2hlcmUgYWZ0ZXIgdGhpcyBjYWxsCi0gICAg
bV90cmFuc3BhcmVuY3kuaW5pdChtX2dyYXBoaWNzQ29udGV4dCwgbGF5ZXJNb2RlLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW5jeVdpbjo6S2VlcFRyYW5zZm9ybSwgbGF5ZXJS
ZWN0KTsKLQotICAgIC8vIFNldCB1cCB0aGUgREMsIHVzaW5nIHRoZSBvbmUgZnJvbSB0aGUgdHJh
bnNwYXJlbmN5IGhlbHBlci4KLSAgICBpZiAobV90cmFuc3BhcmVuY3kucGxhdGZvcm1Db250ZXh0
KCkpIHsKLSAgICAgICAgbV9oZGMgPSBza2lhOjpCZWdpblBsYXRmb3JtUGFpbnQobV90cmFuc3Bh
cmVuY3kucGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpKTsKLSAgICAgICAgU2V0VGV4dENvbG9y
KG1faGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xvcikpOwotICAgICAgICBTZXRCa01v
ZGUobV9oZGMsIFRSQU5TUEFSRU5UKTsKLSAgICB9Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlRm9u
dFBhaW50ZXI6On5UcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyKCkKLXsKLSAgICBpZiAoIW1f
dXNlR0RJIHx8ICFtX2dyYXBoaWNzQ29udGV4dCB8fCAhbV9wbGF0Zm9ybUNvbnRleHQpCi0gICAg
ICAgIHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZG8uCi0gICAgbV90cmFuc3BhcmVuY3kuY29tcG9z
aXRlKCk7Ci0gICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBtX2dy
YXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLSAgICBtX2dyYXBoaWNzQ29u
dGV4dC0+cmVzdG9yZSgpOwotICAgIGlmIChtX3RyYW5zcGFyZW5jeS5wbGF0Zm9ybUNvbnRleHQo
KSkKLSAgICAgICAgc2tpYTo6RW5kUGxhdGZvcm1QYWludChtX3RyYW5zcGFyZW5jeS5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCkpOwotfQotCiAvLyBTcGVjaWFsaXphdGlvbiBmb3Igc2ltcGxl
IEdseXBoQnVmZmVyIHBhaW50aW5nLgogY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50
ZXIgOiBwdWJsaWMgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlciB7CiAgcHVibGljOgpAQCAt
MTkxLDEzICs5MCwxMCBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlciA6IHB1
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2x5cGhCdWZmZXImLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmKTsK
LSAgICB+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoKTsKIAogICAgIC8vIERyYXdzIHRo
ZSBwYXJ0aWFsIHN0cmluZyBvZiBnbHlwaHMsIHN0YXJ0aW5nIGF0IHxzdGFydEFkdmFuY2V8IHRv
IHRoZQotICAgIC8vIGxlZnQgb2YgbV9wb2ludC4gV2UgZXhwcmVzcyBpdCB0aGlzIHdheSBzbyB0
aGF0IGlmIHdlJ3JlIHVzaW5nIHRoZSBTa2lhCi0gICAgLy8gZHJhd2luZyBwYXRoIHdlIGNhbiB1
c2UgZmxvYXRpbmctcG9pbnQgcG9zaXRpb25pbmcsIGV2ZW4gdGhvdWdoIHdlIGhhdmUKLSAgICAv
LyB0byB1c2UgaW50ZWdlciBwb3NpdGlvbmluZyBpbiB0aGUgR0RJIHBhdGguCi0gICAgYm9vbCBk
cmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQqIGdseXBocywgY29uc3QgaW50KiBh
ZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsKKyAgICAvLyBsZWZ0IG9mIG1fcG9p
bnQuCisgICAgdm9pZCBkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQqIGdseXBo
cywgY29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsKIAogIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IGVzdGltYXRlVGV4dEJvdW5kcygpOwpAQCAtMjA2
LDEwICsxMDIsNiBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlciA6IHB1CiAg
ICAgY29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhCdWZmZXI7CiAgICAgaW50IG1fZnJvbTsKICAg
ICBpbnQgbV9udW1HbHlwaHM7Ci0KLSAgICAvLyBXaGVuIG1fdXNlR2RpIGlzIHNldCwgdGhpcyBz
dG9yZXMgdGhlIHByZXZpb3VzIEhGT05UIHNlbGVjdGVkIGludG8gdGhlCi0gICAgLy8gbV9oZGMg
c28gd2UgY2FuIHJlc3RvcmUgaXQuCi0gICAgSEdESU9CSiBtX29sZEZvbnQ7ICAvLyBGb3IgcmVz
dG9yaW5nIHRoZSBEQyB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCiB9OwogCiBUcmFuc3BhcmVuY3lB
d2FyZUdseXBoUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoCkBAIC0yMjMs
MjEgKzExNSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpUcmFuc3BhcmUKICAg
ICAsIG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZmZXIpCiAgICAgLCBtX2Zyb20oZnJvbSkKICAgICAs
IG1fbnVtR2x5cGhzKG51bUdseXBocykKLSAgICAsIG1fb2xkRm9udCgwKQotewotICAgIGluaXQo
KTsKLQotICAgIGlmIChtX2hkYykKLSAgICAgICAgbV9vbGRGb250ID0gOjpTZWxlY3RPYmplY3Qo
bV9oZGMsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7Ci19Ci0KLVRyYW5zcGFyZW5j
eUF3YXJlR2x5cGhQYWludGVyOjp+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoKQogewot
ICAgIGlmIChtX3VzZUdESSAmJiBtX2hkYykKLSAgICAgICAgOjpTZWxlY3RPYmplY3QobV9oZGMs
IG1fb2xkRm9udCk7CiB9CiAKLQogLy8gRXN0aW1hdGVzIHRoZSBib3VuZGluZyBib3ggb2YgdGhl
IGdpdmVuIHRleHQuIFRoaXMgaXMgY29waWVkIGZyb20KIC8vIEZvbnRDR1dpbi5jcHAsIGl0IGlz
IHBvc3NpYmxlLCBidXQgYSBsb3QgbW9yZSB3b3JrLCB0byBnZXQgdGhlIHByZWNpZGUKIC8vIGJv
dW5kcy4KQEAgLTI1NCw0NyArMTM0LDE1IEBAIEludFJlY3QgVHJhbnNwYXJlbmN5QXdhcmVHbHlw
aFBhaW50ZXI6OmUKICAgICAgICAgICAgICAgICAgICBmb250TWV0cmljcy5saW5lU3BhY2luZygp
KTsgCiB9CiAKLWJvb2wgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMo
aW50IG51bUdseXBocywKK3ZvaWQgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdH
bHlwaHMoaW50IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBzdGFydEFkdmFuY2UpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3VzZUdESSkgewotICAgICAgICBTa1BvaW50IG9yaWdpbiA9IG1f
cG9pbnQ7Ci0gICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0VG9TY2FsYXIoc3RhcnRBZHZhbmNl
KTsKLSAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNzQ29udGV4dCwgbV9mb250LT5wbGF0
Zm9ybURhdGEoKS5oZm9udCgpLAotICAgICAgICAgICAgICAgICAgICAgIG51bUdseXBocywgZ2x5
cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIGlmICghbV9ncmFwaGljc0NvbnRleHQgfHwgIW1faGRjKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIC8vIFdpbmRvd3MnIG9yaWdpbiBpcyB0aGUgdG9wLWxlZnQgb2YgdGhlIGJv
dW5kaW5nIGJveCwgc28gd2UgaGF2ZQotICAgIC8vIHRvIHN1YnRyYWN0IG9mZiB0aGUgZm9udCBh
c2NlbnQgdG8gZ2V0IGl0LgotICAgIGludCB4ID0gbHJvdW5kZihtX3BvaW50LngoKSArIHN0YXJ0
QWR2YW5jZSk7Ci0gICAgaW50IHkgPSBscm91bmRmKG1fcG9pbnQueSgpIC0gbV9mb250LT5mb250
TWV0cmljcygpLmFzY2VudCgpKTsKLQotICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hh
ZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCi0gICAgLy8gYXJl
IG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNl
dDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENv
bG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAobV9ncmFwaGljc0NvbnRleHQtPmdl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xv
clNwYWNlKSkgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNoYWRvdyBhbmQgdGhpcyBjb2Rl
IGlzIHJlYWNoZWQsIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdygpCi0gICAgICAgIC8v
IHdpbGwgaGF2ZSBhbHJlYWR5IHJldHVybmVkIHRydWUgZHVyaW5nIHRoZSBjdG9yIGluaXRpYXRp
emF0aW9uIG9mIG1fdXNlR0RJCi0gICAgICAgIEFTU0VSVChzaGFkb3dDb2xvci5hbHBoYSgpID09
IDI1NSk7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCkuYWxw
aGEoKSA9PSAyNTUpOwotICAgICAgICBBU1NFUlQoc2hhZG93Qmx1ciA9PSAwKTsKLSAgICAgICAg
Q09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoU2tDb2xvclNldEFS
R0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29s
b3IuYmx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVkVGV4dENvbG9yID0gR2V0VGV4dENv
bG9yKG1faGRjKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCB0ZXh0Q29sb3IpOwotICAg
ICAgICBFeHRUZXh0T3V0KG1faGRjLCB4ICsgc2hhZG93T2Zmc2V0LndpZHRoKCksIHkgKyBzaGFk
b3dPZmZzZXQuaGVpZ2h0KCksIEVUT19HTFlQSF9JTkRFWCwgMCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBocywgJmFkdmFuY2VzWzBdKTsKLSAg
ICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCBzYXZlZFRleHRDb2xvcik7Ci0gICAgfQotICAgIAot
ICAgIHJldHVybiAhIUV4dFRleHRPdXQobV9oZGMsIHgsIHksIEVUT19HTFlQSF9JTkRFWCwgMCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBocywg
JmFkdmFuY2VzWzBdKTsKKyAgICBTa1BvaW50IG9yaWdpbiA9IG1fcG9pbnQ7CisgICAgb3JpZ2lu
LmZYICs9IFNrRmxvYXRUb1NjYWxhcihzdGFydEFkdmFuY2UpOworICAgIHBhaW50U2tpYVRleHQo
bV9ncmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSwKKyAgICAg
ICAgICAgICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7CiB9
CiAKIGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlciA6IHB1YmxpYyBUcmFu
c3BhcmVuY3lBd2FyZUZvbnRQYWludGVyIHsKQEAgLTMwNCwxMCArMTUyLDYgQEAgY2xhc3MgVHJh
bnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRleHRSdW4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJvbSwgaW50IHRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgflRyYW5zcGFyZW5jeUF3YXJlVW5p
c2NyaWJlUGFpbnRlcigpOwotCi0gICAgLy8gVW5pc2NpYmUgd2lsbCBkcmF3IGRpcmVjdGx5IGlu
dG8gb3VyIGJ1ZmZlciwgc28gd2UgbmVlZCB0byBleHBvc2Ugb3VyIERDLgotICAgIEhEQyBoZGMo
KSBjb25zdCB7IHJldHVybiBtX2hkYzsgfQogCiAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEludFJl
Y3QgZXN0aW1hdGVUZXh0Qm91bmRzKCk7CkBAIC0zMzAsMTEgKzE3NCw2IEBAIFRyYW5zcGFyZW5j
eUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnMKICAgICAsIG1fZnJvbShmcm9tKQogICAgICwg
bV90byh0bykKIHsKLSAgICBpbml0KCk7Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJl
UGFpbnRlcjo6flRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcigpCi17CiB9CiAKIElu
dFJlY3QgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyOjplc3RpbWF0ZVRleHRCb3Vu
ZHMoKQpAQCAtNDI1LDIwICsyNjQsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzV2luKEdyYXBo
aWNzQ29udGV4CiAgICAgICAgICAgICAgICAgYWR2YW5jZXNbaV0gPSAwOwogICAgICAgICB9CiAK
LSAgICAgICAgLy8gQWN0dWFsbHkgZHJhdyB0aGUgZ2x5cGhzICh3aXRoIHJldHJ5IG9uIGZhaWx1
cmUpLgotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpbnQgZXhl
Y3V0aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4ZWN1dGlvbnMpIHsKLSAgICAgICAgICAg
IHN1Y2Nlc3MgPSBwYWludGVyLmRyYXdHbHlwaHMoY3VyTGVuLCAmZ2x5cGhzWzBdLCAmYWR2YW5j
ZXNbMF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54KCkgLSBjdXJyZW50V2lkdGgpOwotICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzICYmIGV4ZWN1dGlvbnMgPT0gMCkgewotICAgICAgICAgICAg
ICAgIC8vIEFzayB0aGUgYnJvd3NlciB0byBsb2FkIHRoZSBmb250IGZvciB1cyBhbmQgcmV0cnku
Ci0gICAgICAgICAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmVuc3VyZUZvbnRMb2FkZWQoZm9udC0+
cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
c3VjY2VzcykKLSAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRyYXcgdGhlIGdseXBo
cyBhZnRlciBzZWNvbmQgYXR0ZW1wdCIpOworICAgICAgICBwYWludGVyLmRyYXdHbHlwaHMoY3Vy
TGVuLCAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54
KCkgLSBjdXJyZW50V2lkdGgpOwogICAgIH0KIH0KIApAQCAtNDkyLDM3ICszMTgsOSBAQCB2b2lk
IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRlCiAgICAgaWYgKCFhbHBoYSAmJiBn
cmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpID09IE5v
U3Ryb2tlKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFuc3BhcmVuY3lBd2FyZVVuaXNjcmli
ZVBhaW50ZXIgcGFpbnRlcihncmFwaGljc0NvbnRleHQsIHRoaXMsIHJ1biwgZnJvbSwgdG8sIHBv
aW50KTsKLQotICAgIEhEQyBoZGMgPSBwYWludGVyLmhkYygpOwotICAgIGlmICh3aW5kb3dzQ2Fu
SGFuZGxlVGV4dERyYXdpbmcoZ3JhcGhpY3NDb250ZXh0KSAmJiAhaGRjKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBUT0RPKG1hcnVlbCk6IGh0dHA6Ly9iLzcwMDQ2NCBTZXRUZXh0Q29sb3Ig
ZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW5jeS4KLSAgICAvLyBFbmZvcmNlIG5vbi10cmFuc3Bh
cmVudCBjb2xvci4KLSAgICBjb2xvciA9IFNrQ29sb3JTZXRSR0IoU2tDb2xvckdldFIoY29sb3Ip
LCBTa0NvbG9yR2V0Ryhjb2xvciksIFNrQ29sb3JHZXRCKGNvbG9yKSk7Ci0gICAgaWYgKGhkYykg
ewotICAgICAgICBTZXRUZXh0Q29sb3IoaGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xv
cikpOwotICAgICAgICBTZXRCa01vZGUoaGRjLCBUUkFOU1BBUkVOVCk7Ci0gICAgfQotCi0gICAg
Ly8gSWYgdGhlcmUgaXMgYSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZpbGwgY29sb3Ig
YW5kIHNoYWRvdyBjb2xvciAKLSAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0aG91dCBza2lh
LiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0g
ICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgIGlmIChncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKSAmJiB3aW5kb3dzQ2FuSGFuZGxlRHJh
d1RleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgewotICAgICAgICBDT0xPUlJFRiB0ZXh0Q29s
b3IgPSBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0Nv
bG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKLSAg
ICAgICAgQ09MT1JSRUYgc2F2ZWRUZXh0Q29sb3IgPSBHZXRUZXh0Q29sb3IoaGRjKTsKLSAgICAg
ICAgU2V0VGV4dENvbG9yKGhkYywgdGV4dENvbG9yKTsKLSAgICAgICAgc3RhdGUuZHJhdyhncmFw
aGljc0NvbnRleHQsIGhkYywgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC54KCkpICsgc2hhZG93T2Zm
c2V0LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC55
KCkgLSBmb250TWV0cmljcygpLmFzY2VudCgpKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSwgZnJv
bSwgdG8pOwotICAgICAgICBTZXRUZXh0Q29sb3IoaGRjLCBzYXZlZFRleHRDb2xvcik7IAotICAg
IH0KLQogICAgIC8vIFVuaXNjcmliZSBjb3VudHMgdGhlIGNvb3JkaW5hdGVzIGZyb20gdGhlIHVw
cGVyIGxlZnQsIHdoaWxlIFdlYktpdCB1c2VzCiAgICAgLy8gdGhlIGJhc2VsaW5lLCBzbyB3ZSBo
YXZlIHRvIHN1YnRyYWN0IG9mZiB0aGUgYXNjZW50LgorICAgIEhEQyBoZGMgPSAwOwogICAgIHN0
YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIGxyb3VuZGYocG9pbnQueCgpKSwgbHJvdW5k
Zihwb2ludC55KCkgLSBmb250TWV0cmljcygpLmFzY2VudCgpKSwgZnJvbSwgdG8pOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVI
ZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAJKHJldmlzaW9uIDkxNzU2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw2IEBAIHZvaWQgVW5pc2NyaWJlSGVscGVyOjpk
cmF3KEdyYXBoaWNzQ29udGUKICAgICBIR0RJT0JKIG9sZEZvbnQgPSAwOwogICAgIGludCBjdXJY
ID0geDsKICAgICBib29sIGZpcnN0UnVuID0gdHJ1ZTsKLSAgICBib29sIHVzZVdpbmRvd3NEcmF3
aW5nID0gd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKGdyYXBoaWNzQ29udGV4dCk7CiAKICAg
ICBmb3IgKHNpemVfdCBzY3JlZW5JbmRleCA9IDA7IHNjcmVlbkluZGV4IDwgbV9ydW5zLnNpemUo
KTsgc2NyZWVuSW5kZXgrKykgewogICAgICAgICBpbnQgaXRlbUluZGV4ID0gbV9zY3JlZW5PcmRl
cltzY3JlZW5JbmRleF07CkBAIC0zNDgsNDMgKzM0NywyMiBAQCB2b2lkIFVuaXNjcmliZUhlbHBl
cjo6ZHJhdyhHcmFwaGljc0NvbnRlCiAgICAgICAgICAgICAvLyBQYXNzIDAgaW4gd2hlbiB0aGVy
ZSBpcyBubyBqdXN0aWZpY2F0aW9uLgogICAgICAgICAgICAgY29uc3QgaW50KiBqdXN0aWZ5ID0g
c2hhcGluZy5tX2p1c3RpZnkuc2l6ZSgpID09IDAgPyAwIDogJnNoYXBpbmcubV9qdXN0aWZ5W2Zy
b21HbHlwaF07CiAKLSAgICAgICAgICAgIGlmICh1c2VXaW5kb3dzRHJhd2luZykgewotICAgICAg
ICAgICAgICAgIGlmIChmaXJzdFJ1bikgewotICAgICAgICAgICAgICAgICAgICBvbGRGb250ID0g
U2VsZWN0T2JqZWN0KGRjLCBzaGFwaW5nLm1faGZvbnQpOwotICAgICAgICAgICAgICAgICAgICBm
aXJzdFJ1biA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBTZWxlY3RPYmplY3QoZGMsIHNoYXBpbmcubV9oZm9udCk7Ci0gICAgICAgICAgICB9Ci0K
ICAgICAgICAgICAgIC8vIEZvbnRzIHdpdGggZGlmZmVyZW50IGFzY2VudHMgY2FuIGJlIHVzZWQg
dG8gcmVuZGVyIGRpZmZlcmVudAogICAgICAgICAgICAgLy8gcnVucy4gICdBY3Jvc3MtcnVucycg
eS1jb29yZGluYXRlIGNvcnJlY3Rpb24gbmVlZHMgdG8gYmUKICAgICAgICAgICAgIC8vIGFkanVz
dGVkIGZvciBlYWNoIGZvbnQuCiAgICAgICAgICAgICBib29sIHRleHRPdXRPayA9IGZhbHNlOwog
ICAgICAgICAgICAgZm9yIChpbnQgZXhlY3V0aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4
ZWN1dGlvbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAodXNlV2luZG93c0RyYXdpbmcpIHsKLSAg
ICAgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IFNjcmlwdFRleHRPdXQoZGMsIHNoYXBpbmcu
bV9zY3JpcHRDYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VyWCArIGlubmVyT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB5IC0gc2hhcGluZy5tX2FzY2VudE9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgJml0ZW0uYSwgMCwgMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcu
bV9nbHlwaHNbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2x5cGhDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnNoYXBpbmcubV9hZHZhbmNlW2Zyb21HbHlwaF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zmc2V0c1tm
cm9tR2x5cGhdKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dE91dE9rID0gKGhyID09IFNfT0sp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFNrUG9pbnQg
b3JpZ2luOwotICAgICAgICAgICAgICAgICAgICBvcmlnaW4uZlggPSBjdXJYICsgKyBpbm5lck9m
ZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2luLmZZID0geSArIG1fYXNjZW50OwotICAg
ICAgICAgICAgICAgICAgICBwYWludFNraWFUZXh0KGdyYXBoaWNzQ29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwaW5nLm1faGZvbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2x5cGhDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmc2hhcGluZy5tX2dseXBoc1tmcm9tR2x5cGhdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zmc2V0c1tmcm9tR2x5cGhd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcmlnaW4pOwotICAgICAgICAg
ICAgICAgICAgICB0ZXh0T3V0T2sgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBTa1BvaW50IG9yaWdpbjsKKyAgICAgICAgICAgICAgICBvcmlnaW4uZlggPSBjdXJY
ICsgKyBpbm5lck9mZnNldDsKKyAgICAgICAgICAgICAgICBvcmlnaW4uZlkgPSB5ICsgbV9hc2Nl
bnQ7CisgICAgICAgICAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwaW5nLm1faGZvbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbHlwaENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnNoYXBpbmcubV9nbHlwaHNbZnJvbUdseXBoXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnNoYXBpbmcubV9vZmZzZXRzW2Zyb21HbHlwaF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmb3JpZ2luKTsKKyAgICAgICAgICAgICAgICB0ZXh0T3V0T2sgPSB0
cnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0T3V0T2sgJiYgMCA9PSBleGVjdXRpb25z
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIFRleHRPdXQgaXMgY2FsbGVkIGZyb20gdGhl
IHJlbmRlcmVyIGl0IG1pZ2h0IGZhaWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lvbiA5MTc1NikK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw1OCArNDMsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWJvb2wgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KEdyYXBoaWNzQ29udGV4dCAq
Y29udGV4dCkKLXsKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRv
d0JsdXI7Ci0gICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xv
clNwYWNlOwotCi0gICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93
T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSk7Ci0gICAg
cmV0dXJuICFoYXNTaGFkb3cgfHwgKCFzaGFkb3dCbHVyICYmIChzaGFkb3dDb2xvci5hbHBoYSgp
ID09IDI1NSkgJiYgKGNvbnRleHQtPmZpbGxDb2xvcigpLmFscGhhKCkgPT0gMjU1KSk7Ci19Ci0K
LWJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCkKLXsKLSAgICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3co
Y29udGV4dCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIENoZWNrIGZvciBzaGFk
b3cgZWZmZWN0cy4KLSAgICBpZiAoIXdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhjb250
ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQpCi17Ci0gICAgLy8gQ2hlY2sgZm9yIG5vbi10cmFuc2xhdGlvbiB0cmFuc2Zv
cm1zLiBTb21ldGltZXMgem9vbXMgd2lsbCBsb29rIGJldHRlciBpbgotICAgIC8vIFNraWEsIGFu
ZCBzb21ldGltZXMgYmV0dGVyIGluIFdpbmRvd3MuIFRoZSBtYWluIHByb2JsZW0gaXMgdGhhdCB6
b29taW5nCi0gICAgLy8gaW4gdXNpbmcgU2tpYSB3aWxsIHNob3cgeW91IHRoZSBoaW50ZWQgb3V0
bGluZXMgZm9yIHRoZSBzbWFsbGVyIHNpemUsCi0gICAgLy8gd2hpY2ggbG9vayB3ZWlyZC4gQWxs
IGVsc2UgYmVpbmcgZXF1YWwsIGl0J3MgYmV0dGVyIHRvIHVzZSBXaW5kb3dzJyB0ZXh0Ci0gICAg
Ly8gZHJhd2luZywgc28gd2UgZG9uJ3QgY2hlY2sgZm9yIHpvb21zLgotICAgIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbWF0cml4ID0gY29udGV4dC0+Z2V0Q1RNKCk7Ci0gICAgaWYgKG1hdHJpeC5i
KCkgIT0gMCB8fCBtYXRyaXguYygpICE9IDApICAvLyBDaGVjayBmb3Igc2tldy4KLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIHN0cm9rZSBlZmZlY3RzLgotICAgIGlm
IChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Z2V0VGV4dERyYXdpbmdNb2RlKCkgIT0gVGV4
dE1vZGVGaWxsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3IgZ3Jh
ZGllbnRzLgotICAgIGlmIChjb250ZXh0LT5maWxsR3JhZGllbnQoKSB8fCBjb250ZXh0LT5zdHJv
a2VHcmFkaWVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3Ig
cGF0dGVybnMuCi0gICAgaWYgKGNvbnRleHQtPmZpbGxQYXR0ZXJuKCkgfHwgY29udGV4dC0+c3Ry
b2tlUGF0dGVybigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5pc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiBzdGF0aWMgdm9pZCBz
a2lhRHJhd1RleHQoU2tDYW52YXMqIGNhbnZhcywKICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTa1BvaW50JiBwb2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICBTa1BhaW50KiBw
YWludCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1NraWFGb250V2luLmgJKHJldmlzaW9uIDkxNzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwz
MyArMzksNiBAQCBjbGFzcyBTa1BvaW50OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lhOwotCi0vLyBUaGUgZnVu
Y3Rpb25zIGJlbG93IGFyZSB1c2VkIGZvciBtb3JlIGNvbXBsZXggZm9udCBkcmF3aW5nIChlZmZl
Y3RzIHN1Y2ggYXMKLS8vIHN0cm9raW5nIGFuZCBtb3JlIGNvbXBsZXggdHJhbnNmb3JtcykgdGhh
biBXaW5kb3dzIHN1cHBvcnRzIGRpcmVjdGx5LiAgU2luY2UgCi0vLyBXaW5kb3dzIGRyYXdpbmcg
aXMgZmFzdGVyIHlvdSBzaG91bGQgdXNlIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyBmaXJz
dCB0byAKLS8vIGNoZWNrIGlmIHVzaW5nIFNraWEgaXMgcmVxdWlyZWQgYXQgYWxsLgotLy8gTm90
ZSB0aGF0IHRoZSB0ZXh0IHdpbGwgbG9vayBkaWZmZXJlbnQgKG5vIENsZWFyVHlwZSkgc28gdGhp
cyBzaG91bGQgb25seSBiZQotLy8gdXNlZCB3aGVuIG5lY2Vzc2FyeS4KLS8vCi0vLyBXaGVuIHlv
dSBjYWxsIGEgU2tpYSogdGV4dCBkcmF3aW5nIGZ1bmN0aW9uLCB2YXJpb3VzIGdseXBoIG91dGxp
bmVzIHdpbGwgYmUKLS8vIGNhY2hlZC4gQXMgYSByZXN1bHQsIHlvdSBzaG91bGQgY2FsbCBTa2lh
V2luT3V0bGluZUNhY2hlOjpyZW1vdmVQYXRoc0ZvckZvbnQKLS8vIHdoZW4gdGhlIGZvbnQgaXMg
ZGVzdHJveWVkIHNvIHRoYXQgdGhlIGNhY2hlIGRvZXMgbm90IG91dGxpdmUgdGhlIGZvbnQgKHNp
bmNlCi0vLyB0aGUgSEZPTlRzIGFyZSByZWN5Y2xlZCkuCi0vLwotLy8gUmVtZW1iZXIgdGhhdCBT
a2lhJ3MgdGV4dCBkcmF3aW5nIG9yaWdpbiBpcyB0aGUgYmFzZWxpbmUsIGxpa2UgV2ViS2l0LCBu
b3QKLS8vIHRoZSB0b3AsIGxpa2UgV2luZG93cy4KLQotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBm
aWxsQ29sb3IgYW5kIHNoYWRvd0NvbG9yIGFyZSBvcGFxdWUgYW5kIHRoZSB0ZXh0LXNoYWRvdwot
Ly8gaXMgbm90IGJsdXJyZWQuCi1ib29sIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhH
cmFwaGljc0NvbnRleHQqKTsKLQotLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVu
ZGVyaW5nIGlzIHJlY29tbWVuZGVkLgotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmco
R3JhcGhpY3NDb250ZXh0Kik7Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJl
bmRlcmluZyBpcyByZWNvbW1lbmRlZCBpZiBzaGFkb3dzIGFyZQotLy8gZGlzcmVnYXJkZWQuCi1i
b29sIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coR3JhcGhpY3NDb250
ZXh0Kik7CiAKIC8vIE5vdGUgdGhhdCB0aGUgb2Zmc2V0cyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwu
ICBJZiBub3QgTlVMTCBpdCByZXByZXNlbnRzIGEKIC8vIHBlciBnbHlwaCBvZmZzZXQgKHN1Y2gg
YXMgcmV0dXJuZWQgYnkgU2NyaXB0UGxhY2UgV2luZG93cyBBUEkgZnVuY3Rpb24pLgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAkocmV2aXNpb24gOTE3NTYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4NDYsNiArMTg0Niw5OSBA
QCBCVUdDUjQyODc1IFdPTlRGSVggU0tJUCA6IHNwdXRuaWsgPSBURVhUCiAKIEJVR1dLMzg3MDUg
OiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbmRib3gtaW5oZXJpdC10by1pbml0aWFsLWRvY3VtZW50
LTIuaHRtbCA9IFRFWFQKIAorLy8gU3dpdGNoaW5nIHdpbmRvd3Mgb3ZlciBmcm9tIEdESSB0byBT
a2lhIGZvciBhbGwgdGV4dCByZW5kZXJpbmcuCisvLyBXaGVuIHRoYXQgbGFuZHMsIHdlIHdpbGwg
cmViYXNlbGluZSB0aGVzZSBpbWFnZXMuCitCVUdXSzY1MjAzIFdJTiA6IGVkaXRpbmcvc2VsZWN0
aW9uL3ZlcnRpY2FsLWxyLWx0ci1leHRlbmQtbGluZS1iYWNrd2FyZC1ici5odG1sID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogZWRpdGluZy9zZWxlY3Rpb24vdmVydGljYWwtbHItbHRyLWV4dGVu
ZC1saW5lLWZvcndhcmQtYnIuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGVkaXRpbmcv
c2VsZWN0aW9uL3ZlcnRpY2FsLXJsLWx0ci1leHRlbmQtbGluZS1iYWNrd2FyZC1ici5odG1sID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZWRpdGluZy9zZWxlY3Rpb24vdmVydGljYWwtcmwtbHRy
LWV4dGVuZC1saW5lLWJhY2t3YXJkLXAuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGVk
aXRpbmcvc2VsZWN0aW9uL3ZlcnRpY2FsLXJsLWx0ci1leHRlbmQtbGluZS1iYWNrd2FyZC13cmFw
Lmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBlZGl0aW5nL3NlbGVjdGlvbi92ZXJ0aWNh
bC1ybC1sdHItZXh0ZW5kLWxpbmUtZm9yd2FyZC1ici5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogZWRpdGluZy9zZWxlY3Rpb24vdmVydGljYWwtcmwtbHRyLWV4dGVuZC1saW5lLWZvcndh
cmQtcC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZWRpdGluZy9zZWxlY3Rpb24vdmVy
dGljYWwtcmwtbHRyLWV4dGVuZC1saW5lLWZvcndhcmQtd3JhcC5odG1sID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogZmFzdC9ib3JkZXJzL2JvcmRlci1hbnRpYWxpYXNpbmcuaHRtbCA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vdmVyZmxvdy1o
aWRkZW4uaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvcmVwYWludC9yZWZsZWN0
aW9uLXJlZHJhdy5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC9yZXBhaW50L3No
YWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBm
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLmh0bWwgPSBJTUFH
RQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12
ZXJ0aWNhbC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC9yZXBhaW50L3NoYWRv
dy1tdWx0aXBsZS12ZXJ0aWNhbC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC90
ZXh0L2F0c3VpLXNwYWNpbmctZmVhdHVyZXMuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IGZhc3QvdGV4dC9jZy12cy1hdHN1aS5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFz
dC90ZXh0L2NvbXBsZXgtdGV4dC1vcGFjaXR5Lmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4g
OiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9jb21wbGV4LWNoYXJhY3Rlci1iYXNlZC1mYWxsYmFj
ay5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwv
ZGFuZGEtc3BhY2UuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL3RoYWktYmFodC1zcGFjZS5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1saW5lLWJyZWFrcy5odG1sID0gSU1BR0UKK0JV
R1dLNjUyMDMgV0lOIDogZmFzdC90cmFuc2Zvcm1zL3NoYWRvd3MuaHRtbCA9IElNQUdFCitCVUdX
SzY1MjAzIFdJTiA6IG1lZGlhL2F1ZGlvLXJlcGFpbnQuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHBsYXRmb3JtL3dpbi9mYXN0L3RleHQvdW5pc2NyaWJlLW1pc3NpbmctZ2x5cGguaHRt
bCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS1TRS90ZXh0LWludHJv
LTA1LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1h
dGUtZWxlbS0zNy10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEu
MS9hbmltYXRlLWVsZW0tMzktdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzND
LVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTQwLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDog
c3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS00MS10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNDYtdC5zdmcgPSBJTUFHRQorQlVH
V0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTYwLXQuc3ZnID0gSU1B
R0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02MS10LnN2
ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0t
NjItdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0
ZS1lbGVtLTYzLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4x
L2FuaW1hdGUtZWxlbS02NC10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0Mt
U1ZHLTEuMS9hbmltYXRlLWVsZW0tNjUtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY2LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02Ny10LnN2ZyA9IElNQUdFCitCVUdX
SzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjgtdC5zdmcgPSBJTUFH
RQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY5LXQuc3Zn
ID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS03
MC10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRl
LWVsZW0tODEtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEv
YW5pbWF0ZS1lbGVtLTgyLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1T
VkctMS4xL2FuaW1hdGUtZWxlbS04My10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2
Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTA3LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogc3ZnL1czQy1TVkctMS4xL3N0cnVjdC1mcmFnLTAyLXQuc3ZnID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL3RleHQtYWxpZ24tMDQtYi5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvdGV4dC1hbGlnbi0wNS1iLnN2ZyA9IElN
QUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWFsaWduLTA2LWIuc3Zn
ID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL3RleHQtcGF0aC0wMS1i
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LXRleHQt
MDUtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYXMtYmFja2dyb3VuZC1pbWFn
ZS9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL2FzLWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS5odG1sID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogc3ZnL2JhdGlrL2ZpbHRlcnMvZmVUaWxlLnN2ZyA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IHN2Zy9iYXRpay9maWx0ZXJzL2ZpbHRlclJlZ2lvbnMuc3ZnID0gSU1BR0UKK0JV
R1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvbG9uZ1RleHRPblBhdGguc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dEFuY2hvci5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0RmVhdHVyZXMuc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dExheW91dC5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0UENEQVRBLnN2ZyA9IElNQUdFCitC
VUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRQcm9wZXJ0aWVzLnN2ZyA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRQcm9wZXJ0aWVzMi5zdmcgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0U3R5bGVzLnN2ZyA9IElN
QUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jYXJ0by5uZXQvdGV4dGJveC5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvY2FydG8ubmV0L3dpbmRvdy5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvY3NzL2dyb3VwLXdpdGgtc2hhZG93LnN2ZyA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IHN2Zy9jc3MvdGV4dC1ncmFkaWVudC1zaGFkb3cuc3ZnID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogc3ZnL2Nzcy90ZXh0LXNoYWRvdy1tdWx0aXBsZS54aHRtbCA9IElNQUdFCitC
VUdXSzY1MjAzIFdJTiA6IHN2Zy9jdXN0b20vanMtbGF0ZS1jbGlwUGF0aC1hbmQtb2JqZWN0LWNy
ZWF0aW9uLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jdXN0b20vanMtbGF0ZS1j
bGlwUGF0aC1jcmVhdGlvbi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9t
L2xpbmtpbmctYS0wMy1iLXZpZXdCb3guc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L2N1c3RvbS9saW5raW5nLXVyaS0wMS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2
Zy9jdXN0b20vc3ZnLWZvbnRzLWZhbGxiYWNrLnhodG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdUZXh0RWxlbWVudC1kb20tbGVuZ3RoQWRqdXN0LWF0
dHIuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
VGV4dEVsZW1lbnQtc3ZnZG9tLWxlbmd0aEFkanVzdC1wcm9wLmh0bWwgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvaGl4aWUvbWl4ZWQvMDA5LnhtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy90ZXh0L2ZvcmVpZ25PYmplY3QtdGV4dC1jbGlwcGluZy1idWcueG1sID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL3RleHQvc2NhbGluZy1mb250LXdpdGgtZ2VvbWV0cmljLXBy
ZWNpc2lvbi5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3RleHQvdGV4dC1hbGln
bi0wMS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3RleHQtYWxpZ24t
MDUtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0LWFsaWduLTA2
LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3RleHQvdGV4dC1pbnRyby0wNS10
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3RleHQtcGF0aC0wMS1iLnN2
ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3RleHRQYXRoQm91bmRzQnVnLnN2
ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy96b29tL3BhZ2Uvem9vbS1jb29yZHMtdmll
d2F0dHItMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS9wYWdlL3pv
b20taGl4aWUtbWl4ZWQtMDA4LnhtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy96b29t
L3BhZ2Uvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDog
c3ZnL3pvb20vdGV4dC96b29tLWNvb3Jkcy12aWV3YXR0ci0wMS1iLnN2ZyA9IElNQUdFCitCVUdX
SzY1MjAzIFdJTiA6IHN2Zy96b29tL3RleHQvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1B
R0UKKwogLy8gV2ViS2l0IHJvbGwgNTg3OTE6NTg4MDcKIEJVR0NSNDMzMTkgTElOVVggREVCVUcg
OiBmYXN0L2Zvcm1zL3NlbGVjdC1lbXB0eS1vcHRpb24taGVpZ2h0Lmh0bWwgPSBQQVNTIFRJTUVP
VVQKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102054</attachid>
            <date>2011-07-26 14:45:50 -0700</date>
            <delta_ts>2011-07-28 11:25:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65203-20110726174550.patch</filename>
            <type>text/plain</type>
            <size>29976</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxNzc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDctMjYgIE1pa2UgUmVl
ZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAgICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdE
SSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gZXhpc3Rpbmcg
dGVzdHMgYXBwbHkgdG8gdGhlIG5ldyBkcmF3aW5nIHBhdGgKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFp
bnRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lh
Rm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRT
aGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OndpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFk
b3cpOgorCiAyMDExLTA3LTI2ICBWaWV0LVRydW5nIEx1dSAgPHZpZXR0cnVuZ2x1dUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW1wcm92ZSAoaS5lLiwgc3BlZWQgdXApIC5neXAoaSkgZmlsZXMg
Zm9yIENocm9taXVtCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDkx
NzU2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENo
cm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTQgKzYyLDggQEAgYm9vbCBjYW52
YXNIYXNNdWx0aXBsZUxheWVycyhjb25zdCBTa0NhbgogY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVG
b250UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcihH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgflRyYW5zcGFyZW5jeUF3
YXJlRm9udFBhaW50ZXIoKTsKIAogcHJvdGVjdGVkOgotICAgIC8vIENhbGxlZCBieSBvdXIgc3Vi
Y2xhc3MnIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgR0RJIGlmIG5lY2Vzc2FyeS4gVGhpcwot
ICAgIC8vIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGNhbGxlZCBhZnRlciB0
aGUgc3ViY2xhc3MgZmluaXNoZXMKLSAgICAvLyBjb25zdHJ1Y3Rpb24gKGl0IGNhbGxzIHZpcnR1
YWwgZnVuY3Rpb25zKS4KLSAgICB2b2lkIGluaXQoKTsKLQogICAgIHZpcnR1YWwgSW50UmVjdCBl
c3RpbWF0ZVRleHRCb3VuZHMoKSA9IDA7CiAKICAgICAvLyBVc2UgdGhlIGNvbnRleHQgZnJvbSB0
aGUgdHJhbnNwYXJlbmN5IGhlbHBlciB3aGVuIGRyYXdpbmcgd2l0aCBHREkuIEl0CkBAIC03OCwy
MCArNzIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIG1fcGxh
dGZvcm1Db250ZXh0OwogCiAgICAgRmxvYXRQb2ludCBtX3BvaW50OwotCi0gICAgLy8gU2V0IHdo
ZW4gV2luZG93cyBjYW4gaGFuZGxlIHRoZSB0eXBlIG9mIGRyYXdpbmcgd2UncmUgZG9pbmcuCi0g
ICAgYm9vbCBtX3VzZUdESTsKLQotICAgIC8vIFRoZXNlIG1lbWJlcnMgYXJlIHZhbGlkIG9ubHkg
d2hlbiBtX3VzZUdESSBpcyBzZXQuCi0gICAgSERDIG1faGRjOwotICAgIFRyYW5zcGFyZW5jeVdp
biBtX3RyYW5zcGFyZW5jeTsKLQotcHJpdmF0ZToKLSAgICAvLyBDYWxsIHdoZW4gd2UncmUgdXNp
bmcgR0RJIG1vZGUgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNwYXJlbmN5V2luIHRvIGhlbHAKLSAg
ICAvLyB1cyBkcmF3IEdESSB0ZXh0LgotICAgIHZvaWQgaW5pdGlhbGl6ZUZvckdESSgpOwotCi0g
ICAgYm9vbCBtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXllcjsgIC8vIFdlIGNyZWF0ZWQgYSBsYXll
ciB0byBnaXZlIHRoZSBmb250IHNvbWUgYWxwaGEuCiB9OwogCiBUcmFuc3BhcmVuY3lBd2FyZUZv
bnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwKQEAgLTk5LDkwICs3OSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6
OlRyYW5zcGFyZW4KICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3Bs
YXRmb3JtQ29udGV4dChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkKICAgICAsIG1fcG9pbnQo
cG9pbnQpCi0gICAgLCBtX3VzZUdESSh3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoY29udGV4
dCkpCi0gICAgLCBtX2hkYygwKQotICAgICwgbV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIoZmFs
c2UpCiB7CiB9CiAKLXZvaWQgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5pdCgpCi17
Ci0gICAgaWYgKG1fdXNlR0RJKQotICAgICAgICBpbml0aWFsaXplRm9yR0RJKCk7Ci19Ci0KLXZv
aWQgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5pdGlhbGl6ZUZvckdESSgpCi17Ci0g
ICAgbV9ncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICBTa0NvbG9yIGNvbG9yID0gbV9wbGF0
Zm9ybUNvbnRleHQtPmVmZmVjdGl2ZUZpbGxDb2xvcigpOwotICAgIC8vIFVzZWQgb25seSB3aGVu
IG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyIGlzIHRydWUuCi0gICAgZmxvYXQgbGF5ZXJBbHBo
YSA9IDAuMGY7Ci0gICAgaWYgKFNrQ29sb3JHZXRBKGNvbG9yKSAhPSAweEZGKSB7Ci0gICAgICAg
IC8vIFdoZW4gdGhlIGZvbnQgaGFzIHNvbWUgdHJhbnNwYXJlbmN5LCBhcHBseSBpdCBieSBjcmVh
dGluZyBhIG5ldwotICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXIgd2l0aCB0aGF0IG9wYWNp
dHkgYXBwbGllZC4gV2UnbGwgYWN0dWFsbHkgY3JlYXRlCi0gICAgICAgIC8vIGEgbmV3IHRyYW5z
cGFyZW5jeSBsYXllciBhZnRlciB3ZSBjYWxjdWxhdGUgdGhlIGJvdW5kaW5nIGJveC4KLSAgICAg
ICAgbV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIgPSB0cnVlOwotICAgICAgICBsYXllckFscGhh
ID0gU2tDb2xvckdldEEoY29sb3IpIC8gMjU1LjBmOwotICAgICAgICAvLyBUaGUgY29sb3Igc2hv
dWxkIGJlIG9wYXF1ZSBub3cuCi0gICAgICAgIGNvbG9yID0gU2tDb2xvclNldFJHQihTa0NvbG9y
R2V0Uihjb2xvciksIFNrQ29sb3JHZXRHKGNvbG9yKSwgU2tDb2xvckdldEIoY29sb3IpKTsKLSAg
ICB9Ci0KLSAgICBUcmFuc3BhcmVuY3lXaW46OkxheWVyTW9kZSBsYXllck1vZGU7Ci0gICAgSW50
UmVjdCBsYXllclJlY3Q7Ci0gICAgaWYgKG1fcGxhdGZvcm1Db250ZXh0LT5pc0RyYXdpbmdUb0lt
YWdlQnVmZmVyKCkpIHsKLSAgICAgICAgLy8gQXNzdW1lIGlmIHdlJ3JlIGRyYXdpbmcgdG8gYW4g
aW1hZ2UgYnVmZmVyIHRoYXQgdGhlIGJhY2tncm91bmQKLSAgICAgICAgLy8gaXMgbm90IG9wYXF1
ZSBhbmQgd2UgaGF2ZSB0byB1bmRvIENsZWFyVHlwZS4gV2UgbWF5IHdhbnQgdG8KLSAgICAgICAg
Ly8gZW5oYW5jZSB0aGlzIHRvIGFjdHVhbGx5IGNoZWNrLCBzaW5jZSBpdCB3aWxsIG9mdGVuIGJl
IG9wYXF1ZQotICAgICAgICAvLyBhbmQgd2UgY291bGQgZG8gQ2xlYXJUeXBlIGluIHRoYXQgY2Fz
ZS4KLSAgICAgICAgbGF5ZXJNb2RlID0gVHJhbnNwYXJlbmN5V2luOjpUZXh0Q29tcG9zaXRlOwot
ICAgICAgICBsYXllclJlY3QgPSBlc3RpbWF0ZVRleHRCb3VuZHMoKTsKLSAgICAgICAgbV9ncmFw
aGljc0NvbnRleHQtPmNsaXAobGF5ZXJSZWN0KTsKLSAgICAgICAgaWYgKG1fY3JlYXRlZFRyYW5z
cGFyZW5jeUxheWVyKQotICAgICAgICAgICAgbV9ncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNw
YXJlbmN5TGF5ZXIobGF5ZXJBbHBoYSk7Ci0KLSAgICAgICAgLy8gVGhlIHRyYW5zcGFyZW5jeSBo
ZWxwZXIgcmVxdWlyZXMgdGhhdCB3ZSBkcmF3IHRleHQgaW4gYmxhY2sgaW4KLSAgICAgICAgLy8g
dGhpcyBtb2RlIGFuZCBpdCB3aWxsIGFwcGx5IHRoZSBjb2xvci4KLSAgICAgICAgbV90cmFuc3Bh
cmVuY3kuc2V0VGV4dENvbXBvc2l0ZUNvbG9yKGNvbG9yKTsKLSAgICAgICAgY29sb3IgPSBTa0Nv
bG9yU2V0UkdCKDAsIDAsIDApOwotICAgIH0gZWxzZSBpZiAobV9jcmVhdGVkVHJhbnNwYXJlbmN5
TGF5ZXIgfHwgY2FudmFzSGFzTXVsdGlwbGVMYXllcnMobV9wbGF0Zm9ybUNvbnRleHQtPmNhbnZh
cygpKSkgewotICAgICAgICAvLyBXaGVuIHdlJ3JlIGRyYXdpbmcgYSB3ZWIgcGFnZSwgd2Uga25v
dyB0aGUgYmFja2dyb3VuZCBpcyBvcGFxdWUsCi0gICAgICAgIC8vIGJ1dCBpZiB3ZSdyZSBkcmF3
aW5nIHRvIGEgbGF5ZXIsIHdlIHN0aWxsIG5lZWQgZXh0cmEgd29yay4KLSAgICAgICAgbGF5ZXJN
b2RlID0gVHJhbnNwYXJlbmN5V2luOjpPcGFxdWVDb21wb3NpdGVMYXllcjsKLSAgICAgICAgbGF5
ZXJSZWN0ID0gZXN0aW1hdGVUZXh0Qm91bmRzKCk7Ci0gICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0
LT5jbGlwKGxheWVyUmVjdCk7Ci0gICAgICAgIGlmIChtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXll
cikKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVy
KGxheWVyQWxwaGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENvbW1vbiBjYXNlIG9mIGRy
YXdpbmcgb250byB0aGUgYm90dG9tIGxheWVyIG9mIGEgd2ViIHBhZ2U6IHdlCi0gICAgICAgIC8v
IGtub3cgZXZlcnl0aGluZyBpcyBvcGFxdWUgc28gZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBz
cGVjaWFsLgotICAgICAgICBsYXllck1vZGUgPSBUcmFuc3BhcmVuY3lXaW46Ok5vTGF5ZXI7Ci0g
ICAgfQotCi0gICAgLy8gQnVnIDI2MDg4IC0gaW5pdCgpIG1pZ2h0IGZhaWwgaWYgbGF5ZXJSZWN0
IGlzIGludmFsaWQuIEdpdmVuIHRoaXMsIHdlCi0gICAgLy8gbmVlZCB0byBiZSBjYXJlZnVsIHRv
IGNoZWNrIGZvciBudWxsIHBvaW50ZXJzIGV2ZXJ5d2hlcmUgYWZ0ZXIgdGhpcyBjYWxsCi0gICAg
bV90cmFuc3BhcmVuY3kuaW5pdChtX2dyYXBoaWNzQ29udGV4dCwgbGF5ZXJNb2RlLCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW5jeVdpbjo6S2VlcFRyYW5zZm9ybSwgbGF5ZXJS
ZWN0KTsKLQotICAgIC8vIFNldCB1cCB0aGUgREMsIHVzaW5nIHRoZSBvbmUgZnJvbSB0aGUgdHJh
bnNwYXJlbmN5IGhlbHBlci4KLSAgICBpZiAobV90cmFuc3BhcmVuY3kucGxhdGZvcm1Db250ZXh0
KCkpIHsKLSAgICAgICAgbV9oZGMgPSBza2lhOjpCZWdpblBsYXRmb3JtUGFpbnQobV90cmFuc3Bh
cmVuY3kucGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpKTsKLSAgICAgICAgU2V0VGV4dENvbG9y
KG1faGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xvcikpOwotICAgICAgICBTZXRCa01v
ZGUobV9oZGMsIFRSQU5TUEFSRU5UKTsKLSAgICB9Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlRm9u
dFBhaW50ZXI6On5UcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyKCkKLXsKLSAgICBpZiAoIW1f
dXNlR0RJIHx8ICFtX2dyYXBoaWNzQ29udGV4dCB8fCAhbV9wbGF0Zm9ybUNvbnRleHQpCi0gICAg
ICAgIHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZG8uCi0gICAgbV90cmFuc3BhcmVuY3kuY29tcG9z
aXRlKCk7Ci0gICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBtX2dy
YXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLSAgICBtX2dyYXBoaWNzQ29u
dGV4dC0+cmVzdG9yZSgpOwotICAgIGlmIChtX3RyYW5zcGFyZW5jeS5wbGF0Zm9ybUNvbnRleHQo
KSkKLSAgICAgICAgc2tpYTo6RW5kUGxhdGZvcm1QYWludChtX3RyYW5zcGFyZW5jeS5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCkpOwotfQotCiAvLyBTcGVjaWFsaXphdGlvbiBmb3Igc2ltcGxl
IEdseXBoQnVmZmVyIHBhaW50aW5nLgogY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50
ZXIgOiBwdWJsaWMgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlciB7CiAgcHVibGljOgpAQCAt
MTkxLDEzICs5MCwxMCBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlciA6IHB1
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2x5cGhCdWZmZXImLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmKTsK
LSAgICB+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoKTsKIAogICAgIC8vIERyYXdzIHRo
ZSBwYXJ0aWFsIHN0cmluZyBvZiBnbHlwaHMsIHN0YXJ0aW5nIGF0IHxzdGFydEFkdmFuY2V8IHRv
IHRoZQotICAgIC8vIGxlZnQgb2YgbV9wb2ludC4gV2UgZXhwcmVzcyBpdCB0aGlzIHdheSBzbyB0
aGF0IGlmIHdlJ3JlIHVzaW5nIHRoZSBTa2lhCi0gICAgLy8gZHJhd2luZyBwYXRoIHdlIGNhbiB1
c2UgZmxvYXRpbmctcG9pbnQgcG9zaXRpb25pbmcsIGV2ZW4gdGhvdWdoIHdlIGhhdmUKLSAgICAv
LyB0byB1c2UgaW50ZWdlciBwb3NpdGlvbmluZyBpbiB0aGUgR0RJIHBhdGguCi0gICAgYm9vbCBk
cmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQqIGdseXBocywgY29uc3QgaW50KiBh
ZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsKKyAgICAvLyBsZWZ0IG9mIG1fcG9p
bnQuCisgICAgdm9pZCBkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQqIGdseXBo
cywgY29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsKIAogIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IGVzdGltYXRlVGV4dEJvdW5kcygpOwpAQCAtMjA2
LDEwICsxMDIsNiBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlciA6IHB1CiAg
ICAgY29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhCdWZmZXI7CiAgICAgaW50IG1fZnJvbTsKICAg
ICBpbnQgbV9udW1HbHlwaHM7Ci0KLSAgICAvLyBXaGVuIG1fdXNlR2RpIGlzIHNldCwgdGhpcyBz
dG9yZXMgdGhlIHByZXZpb3VzIEhGT05UIHNlbGVjdGVkIGludG8gdGhlCi0gICAgLy8gbV9oZGMg
c28gd2UgY2FuIHJlc3RvcmUgaXQuCi0gICAgSEdESU9CSiBtX29sZEZvbnQ7ICAvLyBGb3IgcmVz
dG9yaW5nIHRoZSBEQyB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCiB9OwogCiBUcmFuc3BhcmVuY3lB
d2FyZUdseXBoUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoCkBAIC0yMjMs
MjEgKzExNSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpUcmFuc3BhcmUKICAg
ICAsIG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZmZXIpCiAgICAgLCBtX2Zyb20oZnJvbSkKICAgICAs
IG1fbnVtR2x5cGhzKG51bUdseXBocykKLSAgICAsIG1fb2xkRm9udCgwKQotewotICAgIGluaXQo
KTsKLQotICAgIGlmIChtX2hkYykKLSAgICAgICAgbV9vbGRGb250ID0gOjpTZWxlY3RPYmplY3Qo
bV9oZGMsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7Ci19Ci0KLVRyYW5zcGFyZW5j
eUF3YXJlR2x5cGhQYWludGVyOjp+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoKQogewot
ICAgIGlmIChtX3VzZUdESSAmJiBtX2hkYykKLSAgICAgICAgOjpTZWxlY3RPYmplY3QobV9oZGMs
IG1fb2xkRm9udCk7CiB9CiAKLQogLy8gRXN0aW1hdGVzIHRoZSBib3VuZGluZyBib3ggb2YgdGhl
IGdpdmVuIHRleHQuIFRoaXMgaXMgY29waWVkIGZyb20KIC8vIEZvbnRDR1dpbi5jcHAsIGl0IGlz
IHBvc3NpYmxlLCBidXQgYSBsb3QgbW9yZSB3b3JrLCB0byBnZXQgdGhlIHByZWNpZGUKIC8vIGJv
dW5kcy4KQEAgLTI1NCw0NyArMTM0LDE1IEBAIEludFJlY3QgVHJhbnNwYXJlbmN5QXdhcmVHbHlw
aFBhaW50ZXI6OmUKICAgICAgICAgICAgICAgICAgICBmb250TWV0cmljcy5saW5lU3BhY2luZygp
KTsgCiB9CiAKLWJvb2wgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMo
aW50IG51bUdseXBocywKK3ZvaWQgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdH
bHlwaHMoaW50IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBzdGFydEFkdmFuY2UpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3VzZUdESSkgewotICAgICAgICBTa1BvaW50IG9yaWdpbiA9IG1f
cG9pbnQ7Ci0gICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0VG9TY2FsYXIoc3RhcnRBZHZhbmNl
KTsKLSAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNzQ29udGV4dCwgbV9mb250LT5wbGF0
Zm9ybURhdGEoKS5oZm9udCgpLAotICAgICAgICAgICAgICAgICAgICAgIG51bUdseXBocywgZ2x5
cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIGlmICghbV9ncmFwaGljc0NvbnRleHQgfHwgIW1faGRjKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIC8vIFdpbmRvd3MnIG9yaWdpbiBpcyB0aGUgdG9wLWxlZnQgb2YgdGhlIGJv
dW5kaW5nIGJveCwgc28gd2UgaGF2ZQotICAgIC8vIHRvIHN1YnRyYWN0IG9mZiB0aGUgZm9udCBh
c2NlbnQgdG8gZ2V0IGl0LgotICAgIGludCB4ID0gbHJvdW5kZihtX3BvaW50LngoKSArIHN0YXJ0
QWR2YW5jZSk7Ci0gICAgaW50IHkgPSBscm91bmRmKG1fcG9pbnQueSgpIC0gbV9mb250LT5mb250
TWV0cmljcygpLmFzY2VudCgpKTsKLQotICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hh
ZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCi0gICAgLy8gYXJl
IG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNl
dDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENv
bG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAobV9ncmFwaGljc0NvbnRleHQtPmdl
dFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xv
clNwYWNlKSkgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNoYWRvdyBhbmQgdGhpcyBjb2Rl
IGlzIHJlYWNoZWQsIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdygpCi0gICAgICAgIC8v
IHdpbGwgaGF2ZSBhbHJlYWR5IHJldHVybmVkIHRydWUgZHVyaW5nIHRoZSBjdG9yIGluaXRpYXRp
emF0aW9uIG9mIG1fdXNlR0RJCi0gICAgICAgIEFTU0VSVChzaGFkb3dDb2xvci5hbHBoYSgpID09
IDI1NSk7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCkuYWxw
aGEoKSA9PSAyNTUpOwotICAgICAgICBBU1NFUlQoc2hhZG93Qmx1ciA9PSAwKTsKLSAgICAgICAg
Q09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoU2tDb2xvclNldEFS
R0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29s
b3IuYmx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVkVGV4dENvbG9yID0gR2V0VGV4dENv
bG9yKG1faGRjKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCB0ZXh0Q29sb3IpOwotICAg
ICAgICBFeHRUZXh0T3V0KG1faGRjLCB4ICsgc2hhZG93T2Zmc2V0LndpZHRoKCksIHkgKyBzaGFk
b3dPZmZzZXQuaGVpZ2h0KCksIEVUT19HTFlQSF9JTkRFWCwgMCwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBocywgJmFkdmFuY2VzWzBdKTsKLSAg
ICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCBzYXZlZFRleHRDb2xvcik7Ci0gICAgfQotICAgIAot
ICAgIHJldHVybiAhIUV4dFRleHRPdXQobV9oZGMsIHgsIHksIEVUT19HTFlQSF9JTkRFWCwgMCwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBocywg
JmFkdmFuY2VzWzBdKTsKKyAgICBTa1BvaW50IG9yaWdpbiA9IG1fcG9pbnQ7CisgICAgb3JpZ2lu
LmZYICs9IFNrRmxvYXRUb1NjYWxhcihzdGFydEFkdmFuY2UpOworICAgIHBhaW50U2tpYVRleHQo
bV9ncmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSwKKyAgICAg
ICAgICAgICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7CiB9
CiAKIGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlciA6IHB1YmxpYyBUcmFu
c3BhcmVuY3lBd2FyZUZvbnRQYWludGVyIHsKQEAgLTMwNCwxMCArMTUyLDYgQEAgY2xhc3MgVHJh
bnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRleHRSdW4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJvbSwgaW50IHRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgflRyYW5zcGFyZW5jeUF3YXJlVW5p
c2NyaWJlUGFpbnRlcigpOwotCi0gICAgLy8gVW5pc2NpYmUgd2lsbCBkcmF3IGRpcmVjdGx5IGlu
dG8gb3VyIGJ1ZmZlciwgc28gd2UgbmVlZCB0byBleHBvc2Ugb3VyIERDLgotICAgIEhEQyBoZGMo
KSBjb25zdCB7IHJldHVybiBtX2hkYzsgfQogCiAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEludFJl
Y3QgZXN0aW1hdGVUZXh0Qm91bmRzKCk7CkBAIC0zMzAsMTEgKzE3NCw2IEBAIFRyYW5zcGFyZW5j
eUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnMKICAgICAsIG1fZnJvbShmcm9tKQogICAgICwg
bV90byh0bykKIHsKLSAgICBpbml0KCk7Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJl
UGFpbnRlcjo6flRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcigpCi17CiB9CiAKIElu
dFJlY3QgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyOjplc3RpbWF0ZVRleHRCb3Vu
ZHMoKQpAQCAtNDI1LDIwICsyNjQsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzV2luKEdyYXBo
aWNzQ29udGV4CiAgICAgICAgICAgICAgICAgYWR2YW5jZXNbaV0gPSAwOwogICAgICAgICB9CiAK
LSAgICAgICAgLy8gQWN0dWFsbHkgZHJhdyB0aGUgZ2x5cGhzICh3aXRoIHJldHJ5IG9uIGZhaWx1
cmUpLgotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpbnQgZXhl
Y3V0aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4ZWN1dGlvbnMpIHsKLSAgICAgICAgICAg
IHN1Y2Nlc3MgPSBwYWludGVyLmRyYXdHbHlwaHMoY3VyTGVuLCAmZ2x5cGhzWzBdLCAmYWR2YW5j
ZXNbMF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54KCkgLSBjdXJyZW50V2lkdGgpOwotICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzICYmIGV4ZWN1dGlvbnMgPT0gMCkgewotICAgICAgICAgICAg
ICAgIC8vIEFzayB0aGUgYnJvd3NlciB0byBsb2FkIHRoZSBmb250IGZvciB1cyBhbmQgcmV0cnku
Ci0gICAgICAgICAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmVuc3VyZUZvbnRMb2FkZWQoZm9udC0+
cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
c3VjY2VzcykKLSAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRyYXcgdGhlIGdseXBo
cyBhZnRlciBzZWNvbmQgYXR0ZW1wdCIpOworICAgICAgICBwYWludGVyLmRyYXdHbHlwaHMoY3Vy
TGVuLCAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54
KCkgLSBjdXJyZW50V2lkdGgpOwogICAgIH0KIH0KIApAQCAtNDkyLDM3ICszMTgsOSBAQCB2b2lk
IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRlCiAgICAgaWYgKCFhbHBoYSAmJiBn
cmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpID09IE5v
U3Ryb2tlKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFuc3BhcmVuY3lBd2FyZVVuaXNjcmli
ZVBhaW50ZXIgcGFpbnRlcihncmFwaGljc0NvbnRleHQsIHRoaXMsIHJ1biwgZnJvbSwgdG8sIHBv
aW50KTsKLQotICAgIEhEQyBoZGMgPSBwYWludGVyLmhkYygpOwotICAgIGlmICh3aW5kb3dzQ2Fu
SGFuZGxlVGV4dERyYXdpbmcoZ3JhcGhpY3NDb250ZXh0KSAmJiAhaGRjKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBUT0RPKG1hcnVlbCk6IGh0dHA6Ly9iLzcwMDQ2NCBTZXRUZXh0Q29sb3Ig
ZG9lc24ndCBzdXBwb3J0IHRyYW5zcGFyZW5jeS4KLSAgICAvLyBFbmZvcmNlIG5vbi10cmFuc3Bh
cmVudCBjb2xvci4KLSAgICBjb2xvciA9IFNrQ29sb3JTZXRSR0IoU2tDb2xvckdldFIoY29sb3Ip
LCBTa0NvbG9yR2V0Ryhjb2xvciksIFNrQ29sb3JHZXRCKGNvbG9yKSk7Ci0gICAgaWYgKGhkYykg
ewotICAgICAgICBTZXRUZXh0Q29sb3IoaGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xv
cikpOwotICAgICAgICBTZXRCa01vZGUoaGRjLCBUUkFOU1BBUkVOVCk7Ci0gICAgfQotCi0gICAg
Ly8gSWYgdGhlcmUgaXMgYSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZpbGwgY29sb3Ig
YW5kIHNoYWRvdyBjb2xvciAKLSAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0aG91dCBza2lh
LiAKLSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0g
ICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwot
ICAgIGlmIChncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKSAmJiB3aW5kb3dzQ2FuSGFuZGxlRHJh
d1RleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgewotICAgICAgICBDT0xPUlJFRiB0ZXh0Q29s
b3IgPSBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0Nv
bG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKLSAg
ICAgICAgQ09MT1JSRUYgc2F2ZWRUZXh0Q29sb3IgPSBHZXRUZXh0Q29sb3IoaGRjKTsKLSAgICAg
ICAgU2V0VGV4dENvbG9yKGhkYywgdGV4dENvbG9yKTsKLSAgICAgICAgc3RhdGUuZHJhdyhncmFw
aGljc0NvbnRleHQsIGhkYywgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC54KCkpICsgc2hhZG93T2Zm
c2V0LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC55
KCkgLSBmb250TWV0cmljcygpLmFzY2VudCgpKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSwgZnJv
bSwgdG8pOwotICAgICAgICBTZXRUZXh0Q29sb3IoaGRjLCBzYXZlZFRleHRDb2xvcik7IAotICAg
IH0KLQogICAgIC8vIFVuaXNjcmliZSBjb3VudHMgdGhlIGNvb3JkaW5hdGVzIGZyb20gdGhlIHVw
cGVyIGxlZnQsIHdoaWxlIFdlYktpdCB1c2VzCiAgICAgLy8gdGhlIGJhc2VsaW5lLCBzbyB3ZSBo
YXZlIHRvIHN1YnRyYWN0IG9mZiB0aGUgYXNjZW50LgorICAgIEhEQyBoZGMgPSAwOwogICAgIHN0
YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIGxyb3VuZGYocG9pbnQueCgpKSwgbHJvdW5k
Zihwb2ludC55KCkgLSBmb250TWV0cmljcygpLmFzY2VudCgpKSwgZnJvbSwgdG8pOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVI
ZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAJKHJldmlzaW9uIDkxNzU2KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw2IEBAIHZvaWQgVW5pc2NyaWJlSGVscGVyOjpk
cmF3KEdyYXBoaWNzQ29udGUKICAgICBIR0RJT0JKIG9sZEZvbnQgPSAwOwogICAgIGludCBjdXJY
ID0geDsKICAgICBib29sIGZpcnN0UnVuID0gdHJ1ZTsKLSAgICBib29sIHVzZVdpbmRvd3NEcmF3
aW5nID0gd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKGdyYXBoaWNzQ29udGV4dCk7CiAKICAg
ICBmb3IgKHNpemVfdCBzY3JlZW5JbmRleCA9IDA7IHNjcmVlbkluZGV4IDwgbV9ydW5zLnNpemUo
KTsgc2NyZWVuSW5kZXgrKykgewogICAgICAgICBpbnQgaXRlbUluZGV4ID0gbV9zY3JlZW5PcmRl
cltzY3JlZW5JbmRleF07CkBAIC0zNDgsNDMgKzM0NywyMiBAQCB2b2lkIFVuaXNjcmliZUhlbHBl
cjo6ZHJhdyhHcmFwaGljc0NvbnRlCiAgICAgICAgICAgICAvLyBQYXNzIDAgaW4gd2hlbiB0aGVy
ZSBpcyBubyBqdXN0aWZpY2F0aW9uLgogICAgICAgICAgICAgY29uc3QgaW50KiBqdXN0aWZ5ID0g
c2hhcGluZy5tX2p1c3RpZnkuc2l6ZSgpID09IDAgPyAwIDogJnNoYXBpbmcubV9qdXN0aWZ5W2Zy
b21HbHlwaF07CiAKLSAgICAgICAgICAgIGlmICh1c2VXaW5kb3dzRHJhd2luZykgewotICAgICAg
ICAgICAgICAgIGlmIChmaXJzdFJ1bikgewotICAgICAgICAgICAgICAgICAgICBvbGRGb250ID0g
U2VsZWN0T2JqZWN0KGRjLCBzaGFwaW5nLm1faGZvbnQpOwotICAgICAgICAgICAgICAgICAgICBm
aXJzdFJ1biA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
ICAgICBTZWxlY3RPYmplY3QoZGMsIHNoYXBpbmcubV9oZm9udCk7Ci0gICAgICAgICAgICB9Ci0K
ICAgICAgICAgICAgIC8vIEZvbnRzIHdpdGggZGlmZmVyZW50IGFzY2VudHMgY2FuIGJlIHVzZWQg
dG8gcmVuZGVyIGRpZmZlcmVudAogICAgICAgICAgICAgLy8gcnVucy4gICdBY3Jvc3MtcnVucycg
eS1jb29yZGluYXRlIGNvcnJlY3Rpb24gbmVlZHMgdG8gYmUKICAgICAgICAgICAgIC8vIGFkanVz
dGVkIGZvciBlYWNoIGZvbnQuCiAgICAgICAgICAgICBib29sIHRleHRPdXRPayA9IGZhbHNlOwog
ICAgICAgICAgICAgZm9yIChpbnQgZXhlY3V0aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4
ZWN1dGlvbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAodXNlV2luZG93c0RyYXdpbmcpIHsKLSAg
ICAgICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IFNjcmlwdFRleHRPdXQoZGMsIHNoYXBpbmcu
bV9zY3JpcHRDYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VyWCArIGlubmVyT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB5IC0gc2hhcGluZy5tX2FzY2VudE9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgJml0ZW0uYSwgMCwgMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcu
bV9nbHlwaHNbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2x5cGhDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnNoYXBpbmcubV9hZHZhbmNlW2Zyb21HbHlwaF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zmc2V0c1tm
cm9tR2x5cGhdKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dE91dE9rID0gKGhyID09IFNfT0sp
OwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFNrUG9pbnQg
b3JpZ2luOwotICAgICAgICAgICAgICAgICAgICBvcmlnaW4uZlggPSBjdXJYICsgKyBpbm5lck9m
ZnNldDsKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2luLmZZID0geSArIG1fYXNjZW50OwotICAg
ICAgICAgICAgICAgICAgICBwYWludFNraWFUZXh0KGdyYXBoaWNzQ29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwaW5nLm1faGZvbnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2x5cGhDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmc2hhcGluZy5tX2dseXBoc1tmcm9tR2x5cGhdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zmc2V0c1tmcm9tR2x5cGhd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcmlnaW4pOwotICAgICAgICAg
ICAgICAgICAgICB0ZXh0T3V0T2sgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBTa1BvaW50IG9yaWdpbjsKKyAgICAgICAgICAgICAgICBvcmlnaW4uZlggPSBjdXJY
ICsgKyBpbm5lck9mZnNldDsKKyAgICAgICAgICAgICAgICBvcmlnaW4uZlkgPSB5ICsgbV9hc2Nl
bnQ7CisgICAgICAgICAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwaW5nLm1faGZvbnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbHlwaENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnNoYXBpbmcubV9nbHlwaHNbZnJvbUdseXBoXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnNoYXBpbmcubV9vZmZzZXRzW2Zyb21HbHlwaF0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmb3JpZ2luKTsKKyAgICAgICAgICAgICAgICB0ZXh0T3V0T2sgPSB0
cnVlOwogCiAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0T3V0T2sgJiYgMCA9PSBleGVjdXRpb25z
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIFRleHRPdXQgaXMgY2FsbGVkIGZyb20gdGhl
IHJlbmRlcmVyIGl0IG1pZ2h0IGZhaWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAko
cmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjksMTcgKzU2OSw2
IEBAIGNvbnN0IFNrQml0bWFwKiBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiaXQKICAgICByZXR1cm4g
Jm1fY2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKIH0KIAotYm9vbCBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjppc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCkKLXsKLSNp
ZiBFTkFCTEUoU0tJQV9URVhUKQotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAgaWYgKHVz
ZVNraWFHUFUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBza2lhOjpTdXBw
b3J0c1BsYXRmb3JtUGFpbnQobV9jYW52YXMpOwotI2VuZGlmCi19Ci0KIHZvaWQgUGxhdGZvcm1D
b250ZXh0U2tpYTo6Z2V0SW1hZ2VSZXNhbXBsaW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9h
dFNpemUqIGRzdFNpemUpIGNvbnN0CiB7CiAgICAgKnNyY1NpemUgPSBtX2ltYWdlUmVzYW1wbGlu
Z0hpbnRTcmNTaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHJldmlzaW9uIDkxNzU2
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NywxMSArMTY3LDYgQEAgcHVibGljOgogICAg
IGJvb2wgcHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByaW50aW5nOyB9CiAgICAgdm9pZCBz
ZXRQcmludGluZyhib29sIHApIHsgbV9wcmludGluZyA9IHA7IH0KIAotICAgIC8vIFJldHVybnMg
aWYgdGhlIGNvbnRleHQgYWxsb3dzIHJlbmRlcmluZyBvZiBmb250cyB1c2luZyBuYXRpdmUgcGxh
dGZvcm0KLSAgICAvLyBBUElzLiBJZiBmYWxzZSBpcyByZXR1cm5lZCBmb250IHJlbmRlcmluZyBp
cyBwZXJmb3JtZWQgdXNpbmcgdGhlIHNraWEKLSAgICAvLyB0ZXh0IGRyYXdpbmcgQVBJcy4KLSAg
ICBib29sIGlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKTsKLQogICAgIHZvaWQgZ2V0SW1h
Z2VSZXNhbXBsaW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNpemUqIGRzdFNpemUpIGNv
bnN0OwogICAgIHZvaWQgc2V0SW1hZ2VSZXNhbXBsaW5nSGludChjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpOwogICAgIHZvaWQgY2xlYXJJbWFnZVJlc2Ft
cGxpbmdIaW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lh
L1NraWFGb250V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkocmV2aXNpb24gOTE3NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNTggKzQzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIHdp
bmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhHcmFwaGljc0NvbnRleHQgKmNvbnRleHQpCi17
Ci0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAg
IENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLQot
ICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwotICAgIHJldHVybiAhaGFz
U2hhZG93IHx8ICghc2hhZG93Qmx1ciAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYm
IChjb250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOwotfQotCi1ib29sIHdpbmRv
d3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAg
aWYgKCF3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KGNvbnRleHQpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3Igc2hhZG93IGVmZmVjdHMu
Ci0gICAgaWYgKCF3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29udGV4dCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHdpbmRvd3ND
YW5IYW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
KQotewotICAgIC8vIENoZWNrIGZvciBub24tdHJhbnNsYXRpb24gdHJhbnNmb3Jtcy4gU29tZXRp
bWVzIHpvb21zIHdpbGwgbG9vayBiZXR0ZXIgaW4KLSAgICAvLyBTa2lhLCBhbmQgc29tZXRpbWVz
IGJldHRlciBpbiBXaW5kb3dzLiBUaGUgbWFpbiBwcm9ibGVtIGlzIHRoYXQgem9vbWluZwotICAg
IC8vIGluIHVzaW5nIFNraWEgd2lsbCBzaG93IHlvdSB0aGUgaGludGVkIG91dGxpbmVzIGZvciB0
aGUgc21hbGxlciBzaXplLAotICAgIC8vIHdoaWNoIGxvb2sgd2VpcmQuIEFsbCBlbHNlIGJlaW5n
IGVxdWFsLCBpdCdzIGJldHRlciB0byB1c2UgV2luZG93cycgdGV4dAotICAgIC8vIGRyYXdpbmcs
IHNvIHdlIGRvbid0IGNoZWNrIGZvciB6b29tcy4KLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IG1hdHJpeCA9IGNvbnRleHQtPmdldENUTSgpOwotICAgIGlmIChtYXRyaXguYigpICE9IDAgfHwg
bWF0cml4LmMoKSAhPSAwKSAgLy8gQ2hlY2sgZm9yIHNrZXcuCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIENoZWNrIGZvciBzdHJva2UgZWZmZWN0cy4KLSAgICBpZiAoY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPmdldFRleHREcmF3aW5nTW9kZSgpICE9IFRleHRNb2RlRmlsbCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIGdyYWRpZW50cy4KLSAg
ICBpZiAoY29udGV4dC0+ZmlsbEdyYWRpZW50KCkgfHwgY29udGV4dC0+c3Ryb2tlR3JhZGllbnQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIHBhdHRlcm5zLgot
ICAgIGlmIChjb250ZXh0LT5maWxsUGF0dGVybigpIHx8IGNvbnRleHQtPnN0cm9rZVBhdHRlcm4o
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFjb250ZXh0LT5wbGF0Zm9ybUNv
bnRleHQoKS0+aXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgc2tpYURyYXdUZXh0
KFNrQ2FudmFzKiBjYW52YXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2tQb2lu
dCYgcG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2tQYWludCogcGFpbnQsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9u
dFdpbi5oCShyZXZpc2lvbiA5MTc1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvU2tpYUZvbnRXaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzksMzMgKzM5LDYgQEAg
Y2xhc3MgU2tQb2ludDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwotY2xhc3MgUGxhdGZvcm1Db250ZXh0U2tpYTsKLQotLy8gVGhlIGZ1bmN0aW9ucyBiZWxv
dyBhcmUgdXNlZCBmb3IgbW9yZSBjb21wbGV4IGZvbnQgZHJhd2luZyAoZWZmZWN0cyBzdWNoIGFz
Ci0vLyBzdHJva2luZyBhbmQgbW9yZSBjb21wbGV4IHRyYW5zZm9ybXMpIHRoYW4gV2luZG93cyBz
dXBwb3J0cyBkaXJlY3RseS4gIFNpbmNlIAotLy8gV2luZG93cyBkcmF3aW5nIGlzIGZhc3RlciB5
b3Ugc2hvdWxkIHVzZSB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcgZmlyc3QgdG8gCi0vLyBj
aGVjayBpZiB1c2luZyBTa2lhIGlzIHJlcXVpcmVkIGF0IGFsbC4KLS8vIE5vdGUgdGhhdCB0aGUg
dGV4dCB3aWxsIGxvb2sgZGlmZmVyZW50IChubyBDbGVhclR5cGUpIHNvIHRoaXMgc2hvdWxkIG9u
bHkgYmUKLS8vIHVzZWQgd2hlbiBuZWNlc3NhcnkuCi0vLwotLy8gV2hlbiB5b3UgY2FsbCBhIFNr
aWEqIHRleHQgZHJhd2luZyBmdW5jdGlvbiwgdmFyaW91cyBnbHlwaCBvdXRsaW5lcyB3aWxsIGJl
Ci0vLyBjYWNoZWQuIEFzIGEgcmVzdWx0LCB5b3Ugc2hvdWxkIGNhbGwgU2tpYVdpbk91dGxpbmVD
YWNoZTo6cmVtb3ZlUGF0aHNGb3JGb250Ci0vLyB3aGVuIHRoZSBmb250IGlzIGRlc3Ryb3llZCBz
byB0aGF0IHRoZSBjYWNoZSBkb2VzIG5vdCBvdXRsaXZlIHRoZSBmb250IChzaW5jZQotLy8gdGhl
IEhGT05UcyBhcmUgcmVjeWNsZWQpLgotLy8KLS8vIFJlbWVtYmVyIHRoYXQgU2tpYSdzIHRleHQg
ZHJhd2luZyBvcmlnaW4gaXMgdGhlIGJhc2VsaW5lLCBsaWtlIFdlYktpdCwgbm90Ci0vLyB0aGUg
dG9wLCBsaWtlIFdpbmRvd3MuCi0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsbENvbG9yIGFu
ZCBzaGFkb3dDb2xvciBhcmUgb3BhcXVlIGFuZCB0aGUgdGV4dC1zaGFkb3cKLS8vIGlzIG5vdCBi
bHVycmVkLgotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coR3JhcGhpY3NDb250
ZXh0Kik7Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJlbmRlcmluZyBpcyBy
ZWNvbW1lbmRlZC4KLWJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWNzQ29u
dGV4dCopOwotCi0vLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcgaXMg
cmVjb21tZW5kZWQgaWYgc2hhZG93cyBhcmUKLS8vIGRpc3JlZ2FyZGVkLgotYm9vbCB3aW5kb3dz
Q2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwogCiAv
LyBOb3RlIHRoYXQgdGhlIG9mZnNldHMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiAgSWYgbm90IE5V
TEwgaXQgcmVwcmVzZW50cyBhCiAvLyBwZXIgZ2x5cGggb2Zmc2V0IChzdWNoIGFzIHJldHVybmVk
IGJ5IFNjcmlwdFBsYWNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9uKS4KSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlz
aW9uIDkxNzU2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3Rh
dGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xODQ2LDYgKzE4NDYsOTkgQEAgQlVHQ1I0Mjg3
NSBXT05URklYIFNLSVAgOiBzcHV0bmlrID0gVEVYVAogCiBCVUdXSzM4NzA1IDogaHR0cC90ZXN0
cy9zZWN1cml0eS9zYW5kYm94LWluaGVyaXQtdG8taW5pdGlhbC1kb2N1bWVudC0yLmh0bWwgPSBU
RVhUCiAKKy8vIFN3aXRjaGluZyB3aW5kb3dzIG92ZXIgZnJvbSBHREkgdG8gU2tpYSBmb3IgYWxs
IHRleHQgcmVuZGVyaW5nLgorLy8gV2hlbiB0aGF0IGxhbmRzLCB3ZSB3aWxsIHJlYmFzZWxpbmUg
dGhlc2UgaW1hZ2VzLgorQlVHV0s2NTIwMyBXSU4gOiBlZGl0aW5nL3NlbGVjdGlvbi92ZXJ0aWNh
bC1sci1sdHItZXh0ZW5kLWxpbmUtYmFja3dhcmQtYnIuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IGVkaXRpbmcvc2VsZWN0aW9uL3ZlcnRpY2FsLWxyLWx0ci1leHRlbmQtbGluZS1mb3J3
YXJkLWJyLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBlZGl0aW5nL3NlbGVjdGlvbi92
ZXJ0aWNhbC1ybC1sdHItZXh0ZW5kLWxpbmUtYmFja3dhcmQtYnIuaHRtbCA9IElNQUdFCitCVUdX
SzY1MjAzIFdJTiA6IGVkaXRpbmcvc2VsZWN0aW9uL3ZlcnRpY2FsLXJsLWx0ci1leHRlbmQtbGlu
ZS1iYWNrd2FyZC1wLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBlZGl0aW5nL3NlbGVj
dGlvbi92ZXJ0aWNhbC1ybC1sdHItZXh0ZW5kLWxpbmUtYmFja3dhcmQtd3JhcC5odG1sID0gSU1B
R0UKK0JVR1dLNjUyMDMgV0lOIDogZWRpdGluZy9zZWxlY3Rpb24vdmVydGljYWwtcmwtbHRyLWV4
dGVuZC1saW5lLWZvcndhcmQtYnIuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGVkaXRp
bmcvc2VsZWN0aW9uL3ZlcnRpY2FsLXJsLWx0ci1leHRlbmQtbGluZS1mb3J3YXJkLXAuaHRtbCA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGVkaXRpbmcvc2VsZWN0aW9uL3ZlcnRpY2FsLXJsLWx0
ci1leHRlbmQtbGluZS1mb3J3YXJkLXdyYXAuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IGZhc3QvYm9yZGVycy9ib3JkZXItYW50aWFsaWFzaW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIw
MyBXSU4gOiBmYXN0L3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3ZlcmZsb3ctaGlkZGVuLmh0bWwg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3JlcGFpbnQvcmVmbGVjdGlvbi1yZWRyYXcu
aHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlw
bGUtaG9yaXpvbnRhbC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC9yZXBhaW50
L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC5odG1sID0gSU1BR0UKK0JVR1dLNjUy
MDMgV0lOIDogZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwuaHRt
bCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUt
dmVydGljYWwuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9hdHN1aS1z
cGFjaW5nLWZlYXR1cmVzLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3RleHQv
Y2ctdnMtYXRzdWkuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9jb21w
bGV4LXRleHQtb3BhY2l0eS5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC90ZXh0
L2ludGVybmF0aW9uYWwvY29tcGxleC1jaGFyYWN0ZXItYmFzZWQtZmFsbGJhY2suaHRtbCA9IElN
QUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2RhbmRhLXNwYWNl
Lmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90
aGFpLWJhaHQtc3BhY2UuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9p
bnRlcm5hdGlvbmFsL3RoYWktbGluZS1icmVha3MuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IGZhc3QvdHJhbnNmb3Jtcy9zaGFkb3dzLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4g
OiBtZWRpYS9hdWRpby1yZXBhaW50Lmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBwbGF0
Zm9ybS93aW4vZmFzdC90ZXh0L3VuaXNjcmliZS1taXNzaW5nLWdseXBoLmh0bWwgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEtU0UvdGV4dC1pbnRyby0wNS10LnN2ZyA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tMzct
dC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1l
bGVtLTM5LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2Fu
aW1hdGUtZWxlbS00MC10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZH
LTEuMS9hbmltYXRlLWVsZW0tNDEtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
VzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTQ2LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02MC10LnN2ZyA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjEtdC5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTYyLXQuc3ZnID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02My10
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVs
ZW0tNjQtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5p
bWF0ZS1lbGVtLTY1LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkct
MS4xL2FuaW1hdGUtZWxlbS02Ni10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9X
M0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjctdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4g
OiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY4LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUy
MDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02OS10LnN2ZyA9IElNQUdFCitC
VUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNzAtdC5zdmcgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTgxLXQu
c3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxl
bS04Mi10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmlt
YXRlLWVsZW0tODMtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0x
LjEvcHNlcnZlcnMtZ3JhZC0wNy1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9X
M0MtU1ZHLTEuMS9zdHJ1Y3QtZnJhZy0wMi10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWFsaWduLTA0LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogc3ZnL1czQy1TVkctMS4xL3RleHQtYWxpZ24tMDUtYi5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvdGV4dC1hbGlnbi0wNi1iLnN2ZyA9IElNQUdFCitC
VUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LXBhdGgtMDEtYi5zdmcgPSBJTUFH
RQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvdGV4dC10ZXh0LTA1LXQuc3ZnID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2FzLWJhY2tncm91bmQtaW1hZ2UvYW5pbWF0ZWQt
c3ZnLWFzLWJhY2tncm91bmQuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9hcy1p
bWFnZS9hbmltYXRlZC1zdmctYXMtaW1hZ2UuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IHN2Zy9iYXRpay9maWx0ZXJzL2ZlVGlsZS5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvYmF0aWsvZmlsdGVycy9maWx0ZXJSZWdpb25zLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy9iYXRpay90ZXh0L2xvbmdUZXh0T25QYXRoLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRBbmNob3Iuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dEZlYXR1cmVzLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRMYXlvdXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dFBDREFUQS5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBX
SU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0UHJvcGVydGllcy5zdmcgPSBJTUFHRQorQlVHV0s2NTIw
MyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0UHJvcGVydGllczIuc3ZnID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dFN0eWxlcy5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvY2FydG8ubmV0L3RleHRib3guc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogc3ZnL2NhcnRvLm5ldC93aW5kb3cuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDog
c3ZnL2Nzcy9ncm91cC13aXRoLXNoYWRvdy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvY3NzL3RleHQtZ3JhZGllbnQtc2hhZG93LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IHN2Zy9jc3MvdGV4dC1zaGFkb3ctbXVsdGlwbGUueGh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBX
SU4gOiBzdmcvY3VzdG9tL2pzLWxhdGUtY2xpcFBhdGgtYW5kLW9iamVjdC1jcmVhdGlvbi5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL2pzLWxhdGUtY2xpcFBhdGgtY3Jl
YXRpb24uc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2N1c3RvbS9saW5raW5nLWEt
MDMtYi12aWV3Qm94LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jdXN0b20vbGlu
a2luZy11cmktMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL3N2
Zy1mb250cy1mYWxsYmFjay54aHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9keW5h
bWljLXVwZGF0ZXMvU1ZHVGV4dEVsZW1lbnQtZG9tLWxlbmd0aEFkanVzdC1hdHRyLmh0bWwgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR1RleHRFbGVtZW50
LXN2Z2RvbS1sZW5ndGhBZGp1c3QtcHJvcC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDog
c3ZnL2hpeGllL21peGVkLzAwOS54bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4
dC9mb3JlaWduT2JqZWN0LXRleHQtY2xpcHBpbmctYnVnLnhtbCA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHN2Zy90ZXh0L3NjYWxpbmctZm9udC13aXRoLWdlb21ldHJpYy1wcmVjaXNpb24uaHRt
bCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3RleHQtYWxpZ24tMDEtYi5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0LWFsaWduLTA1LWIuc3ZnID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3RleHQvdGV4dC1hbGlnbi0wNi1iLnN2ZyA9IElN
QUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3RleHQtaW50cm8tMDUtdC5zdmcgPSBJTUFH
RQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0LXBhdGgtMDEtYi5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0UGF0aEJvdW5kc0J1Zy5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS9wYWdlL3pvb20tY29vcmRzLXZpZXdhdHRyLTAxLWIu
c3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGllLW1p
eGVkLTAwOC54bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS9wYWdlL3pvb20t
aGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy96b29tL3Rl
eHQvem9vbS1jb29yZHMtdmlld2F0dHItMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4g
OiBzdmcvem9vbS90ZXh0L3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdFCisKIC8vIFdl
YktpdCByb2xsIDU4NzkxOjU4ODA3CiBCVUdDUjQzMzE5IExJTlVYIERFQlVHIDogZmFzdC9mb3Jt
cy9zZWxlY3QtZW1wdHktb3B0aW9uLWhlaWdodC5odG1sID0gUEFTUyBUSU1FT1VUCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102272</attachid>
            <date>2011-07-28 11:25:15 -0700</date>
            <delta_ts>2011-08-25 09:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65203-20110728142514.patch</filename>
            <type>text/plain</type>
            <size>29766</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxOTM5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDctMjggIE1pa2UgUmVl
ZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAgICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdE
SSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlRm9udFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5QXdh
cmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OlRyYW5zcGFyZW5j
eUF3YXJlR2x5cGhQYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJl
Rm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWlu
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNXaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2NyaWJl
SGVscGVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3Jt
Q29udGV4dFNraWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZv
cm1Db250ZXh0U2tpYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4u
aDoKKwogMjAxMS0wNy0yOCAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzY1Mjg5PiBSZW1vdmUgR2VvbG9jYXRpb25Qb3Np
dGlvbkNhY2hlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHJldmlzaW9uIDkxOTM3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9t
aXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTQgKzYyLDggQEAgYm9vbCBjYW52YXNI
YXNNdWx0aXBsZUxheWVycyhjb25zdCBTa0NhbgogY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVGb250
UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcihHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgflRyYW5zcGFyZW5jeUF3YXJl
Rm9udFBhaW50ZXIoKTsKIAogcHJvdGVjdGVkOgotICAgIC8vIENhbGxlZCBieSBvdXIgc3ViY2xh
c3MnIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgR0RJIGlmIG5lY2Vzc2FyeS4gVGhpcwotICAg
IC8vIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gc28gaXQgY2FuIGJlIGNhbGxlZCBhZnRlciB0aGUg
c3ViY2xhc3MgZmluaXNoZXMKLSAgICAvLyBjb25zdHJ1Y3Rpb24gKGl0IGNhbGxzIHZpcnR1YWwg
ZnVuY3Rpb25zKS4KLSAgICB2b2lkIGluaXQoKTsKLQogICAgIHZpcnR1YWwgSW50UmVjdCBlc3Rp
bWF0ZVRleHRCb3VuZHMoKSA9IDA7CiAKICAgICAvLyBVc2UgdGhlIGNvbnRleHQgZnJvbSB0aGUg
dHJhbnNwYXJlbmN5IGhlbHBlciB3aGVuIGRyYXdpbmcgd2l0aCBHREkuIEl0CkBAIC03OCwyMCAr
NzIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIG1fcGxhdGZv
cm1Db250ZXh0OwogCiAgICAgRmxvYXRQb2ludCBtX3BvaW50OwotCi0gICAgLy8gU2V0IHdoZW4g
V2luZG93cyBjYW4gaGFuZGxlIHRoZSB0eXBlIG9mIGRyYXdpbmcgd2UncmUgZG9pbmcuCi0gICAg
Ym9vbCBtX3VzZUdESTsKLQotICAgIC8vIFRoZXNlIG1lbWJlcnMgYXJlIHZhbGlkIG9ubHkgd2hl
biBtX3VzZUdESSBpcyBzZXQuCi0gICAgSERDIG1faGRjOwotICAgIFRyYW5zcGFyZW5jeVdpbiBt
X3RyYW5zcGFyZW5jeTsKLQotcHJpdmF0ZToKLSAgICAvLyBDYWxsIHdoZW4gd2UncmUgdXNpbmcg
R0RJIG1vZGUgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNwYXJlbmN5V2luIHRvIGhlbHAKLSAgICAv
LyB1cyBkcmF3IEdESSB0ZXh0LgotICAgIHZvaWQgaW5pdGlhbGl6ZUZvckdESSgpOwotCi0gICAg
Ym9vbCBtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXllcjsgIC8vIFdlIGNyZWF0ZWQgYSBsYXllciB0
byBnaXZlIHRoZSBmb250IHNvbWUgYWxwaGEuCiB9OwogCiBUcmFuc3BhcmVuY3lBd2FyZUZvbnRQ
YWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwKQEAgLTk5LDkwICs3OSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRy
YW5zcGFyZW4KICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3BsYXRm
b3JtQ29udGV4dChjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkKICAgICAsIG1fcG9pbnQocG9p
bnQpCi0gICAgLCBtX3VzZUdESSh3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoY29udGV4dCkp
Ci0gICAgLCBtX2hkYygwKQotICAgICwgbV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIoZmFsc2Up
CiB7CiB9CiAKLXZvaWQgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5pdCgpCi17Ci0g
ICAgaWYgKG1fdXNlR0RJKQotICAgICAgICBpbml0aWFsaXplRm9yR0RJKCk7Ci19Ci0KLXZvaWQg
VHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5pdGlhbGl6ZUZvckdESSgpCi17Ci0gICAg
bV9ncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICBTa0NvbG9yIGNvbG9yID0gbV9wbGF0Zm9y
bUNvbnRleHQtPmVmZmVjdGl2ZUZpbGxDb2xvcigpOwotICAgIC8vIFVzZWQgb25seSB3aGVuIG1f
Y3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyIGlzIHRydWUuCi0gICAgZmxvYXQgbGF5ZXJBbHBoYSA9
IDAuMGY7Ci0gICAgaWYgKFNrQ29sb3JHZXRBKGNvbG9yKSAhPSAweEZGKSB7Ci0gICAgICAgIC8v
IFdoZW4gdGhlIGZvbnQgaGFzIHNvbWUgdHJhbnNwYXJlbmN5LCBhcHBseSBpdCBieSBjcmVhdGlu
ZyBhIG5ldwotICAgICAgICAvLyB0cmFuc3BhcmVuY3kgbGF5ZXIgd2l0aCB0aGF0IG9wYWNpdHkg
YXBwbGllZC4gV2UnbGwgYWN0dWFsbHkgY3JlYXRlCi0gICAgICAgIC8vIGEgbmV3IHRyYW5zcGFy
ZW5jeSBsYXllciBhZnRlciB3ZSBjYWxjdWxhdGUgdGhlIGJvdW5kaW5nIGJveC4KLSAgICAgICAg
bV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIgPSB0cnVlOwotICAgICAgICBsYXllckFscGhhID0g
U2tDb2xvckdldEEoY29sb3IpIC8gMjU1LjBmOwotICAgICAgICAvLyBUaGUgY29sb3Igc2hvdWxk
IGJlIG9wYXF1ZSBub3cuCi0gICAgICAgIGNvbG9yID0gU2tDb2xvclNldFJHQihTa0NvbG9yR2V0
Uihjb2xvciksIFNrQ29sb3JHZXRHKGNvbG9yKSwgU2tDb2xvckdldEIoY29sb3IpKTsKLSAgICB9
Ci0KLSAgICBUcmFuc3BhcmVuY3lXaW46OkxheWVyTW9kZSBsYXllck1vZGU7Ci0gICAgSW50UmVj
dCBsYXllclJlY3Q7Ci0gICAgaWYgKG1fcGxhdGZvcm1Db250ZXh0LT5pc0RyYXdpbmdUb0ltYWdl
QnVmZmVyKCkpIHsKLSAgICAgICAgLy8gQXNzdW1lIGlmIHdlJ3JlIGRyYXdpbmcgdG8gYW4gaW1h
Z2UgYnVmZmVyIHRoYXQgdGhlIGJhY2tncm91bmQKLSAgICAgICAgLy8gaXMgbm90IG9wYXF1ZSBh
bmQgd2UgaGF2ZSB0byB1bmRvIENsZWFyVHlwZS4gV2UgbWF5IHdhbnQgdG8KLSAgICAgICAgLy8g
ZW5oYW5jZSB0aGlzIHRvIGFjdHVhbGx5IGNoZWNrLCBzaW5jZSBpdCB3aWxsIG9mdGVuIGJlIG9w
YXF1ZQotICAgICAgICAvLyBhbmQgd2UgY291bGQgZG8gQ2xlYXJUeXBlIGluIHRoYXQgY2FzZS4K
LSAgICAgICAgbGF5ZXJNb2RlID0gVHJhbnNwYXJlbmN5V2luOjpUZXh0Q29tcG9zaXRlOwotICAg
ICAgICBsYXllclJlY3QgPSBlc3RpbWF0ZVRleHRCb3VuZHMoKTsKLSAgICAgICAgbV9ncmFwaGlj
c0NvbnRleHQtPmNsaXAobGF5ZXJSZWN0KTsKLSAgICAgICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFy
ZW5jeUxheWVyKQotICAgICAgICAgICAgbV9ncmFwaGljc0NvbnRleHQtPmJlZ2luVHJhbnNwYXJl
bmN5TGF5ZXIobGF5ZXJBbHBoYSk7Ci0KLSAgICAgICAgLy8gVGhlIHRyYW5zcGFyZW5jeSBoZWxw
ZXIgcmVxdWlyZXMgdGhhdCB3ZSBkcmF3IHRleHQgaW4gYmxhY2sgaW4KLSAgICAgICAgLy8gdGhp
cyBtb2RlIGFuZCBpdCB3aWxsIGFwcGx5IHRoZSBjb2xvci4KLSAgICAgICAgbV90cmFuc3BhcmVu
Y3kuc2V0VGV4dENvbXBvc2l0ZUNvbG9yKGNvbG9yKTsKLSAgICAgICAgY29sb3IgPSBTa0NvbG9y
U2V0UkdCKDAsIDAsIDApOwotICAgIH0gZWxzZSBpZiAobV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5
ZXIgfHwgY2FudmFzSGFzTXVsdGlwbGVMYXllcnMobV9wbGF0Zm9ybUNvbnRleHQtPmNhbnZhcygp
KSkgewotICAgICAgICAvLyBXaGVuIHdlJ3JlIGRyYXdpbmcgYSB3ZWIgcGFnZSwgd2Uga25vdyB0
aGUgYmFja2dyb3VuZCBpcyBvcGFxdWUsCi0gICAgICAgIC8vIGJ1dCBpZiB3ZSdyZSBkcmF3aW5n
IHRvIGEgbGF5ZXIsIHdlIHN0aWxsIG5lZWQgZXh0cmEgd29yay4KLSAgICAgICAgbGF5ZXJNb2Rl
ID0gVHJhbnNwYXJlbmN5V2luOjpPcGFxdWVDb21wb3NpdGVMYXllcjsKLSAgICAgICAgbGF5ZXJS
ZWN0ID0gZXN0aW1hdGVUZXh0Qm91bmRzKCk7Ci0gICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5j
bGlwKGxheWVyUmVjdCk7Ci0gICAgICAgIGlmIChtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXllcikK
LSAgICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGxh
eWVyQWxwaGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIENvbW1vbiBjYXNlIG9mIGRyYXdp
bmcgb250byB0aGUgYm90dG9tIGxheWVyIG9mIGEgd2ViIHBhZ2U6IHdlCi0gICAgICAgIC8vIGtu
b3cgZXZlcnl0aGluZyBpcyBvcGFxdWUgc28gZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBzcGVj
aWFsLgotICAgICAgICBsYXllck1vZGUgPSBUcmFuc3BhcmVuY3lXaW46Ok5vTGF5ZXI7Ci0gICAg
fQotCi0gICAgLy8gQnVnIDI2MDg4IC0gaW5pdCgpIG1pZ2h0IGZhaWwgaWYgbGF5ZXJSZWN0IGlz
IGludmFsaWQuIEdpdmVuIHRoaXMsIHdlCi0gICAgLy8gbmVlZCB0byBiZSBjYXJlZnVsIHRvIGNo
ZWNrIGZvciBudWxsIHBvaW50ZXJzIGV2ZXJ5d2hlcmUgYWZ0ZXIgdGhpcyBjYWxsCi0gICAgbV90
cmFuc3BhcmVuY3kuaW5pdChtX2dyYXBoaWNzQ29udGV4dCwgbGF5ZXJNb2RlLCAKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zcGFyZW5jeVdpbjo6S2VlcFRyYW5zZm9ybSwgbGF5ZXJSZWN0
KTsKLQotICAgIC8vIFNldCB1cCB0aGUgREMsIHVzaW5nIHRoZSBvbmUgZnJvbSB0aGUgdHJhbnNw
YXJlbmN5IGhlbHBlci4KLSAgICBpZiAobV90cmFuc3BhcmVuY3kucGxhdGZvcm1Db250ZXh0KCkp
IHsKLSAgICAgICAgbV9oZGMgPSBza2lhOjpCZWdpblBsYXRmb3JtUGFpbnQobV90cmFuc3BhcmVu
Y3kucGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1f
aGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xvcikpOwotICAgICAgICBTZXRCa01vZGUo
bV9oZGMsIFRSQU5TUEFSRU5UKTsKLSAgICB9Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlRm9udFBh
aW50ZXI6On5UcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyKCkKLXsKLSAgICBpZiAoIW1fdXNl
R0RJIHx8ICFtX2dyYXBoaWNzQ29udGV4dCB8fCAhbV9wbGF0Zm9ybUNvbnRleHQpCi0gICAgICAg
IHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZG8uCi0gICAgbV90cmFuc3BhcmVuY3kuY29tcG9zaXRl
KCk7Ci0gICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICBtX2dyYXBo
aWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLSAgICBtX2dyYXBoaWNzQ29udGV4
dC0+cmVzdG9yZSgpOwotICAgIGlmIChtX3RyYW5zcGFyZW5jeS5wbGF0Zm9ybUNvbnRleHQoKSkK
LSAgICAgICAgc2tpYTo6RW5kUGxhdGZvcm1QYWludChtX3RyYW5zcGFyZW5jeS5wbGF0Zm9ybUNv
bnRleHQoKS0+Y2FudmFzKCkpOwotfQotCiAvLyBTcGVjaWFsaXphdGlvbiBmb3Igc2ltcGxlIEds
eXBoQnVmZmVyIHBhaW50aW5nLgogY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIg
OiBwdWJsaWMgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlciB7CiAgcHVibGljOgpAQCAtMTkx
LDEzICs5MCwxMCBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlciA6IHB1CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2x5cGhCdWZmZXImLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAg
ICB+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoKTsKIAogICAgIC8vIERyYXdzIHRoZSBw
YXJ0aWFsIHN0cmluZyBvZiBnbHlwaHMsIHN0YXJ0aW5nIGF0IHxzdGFydEFkdmFuY2V8IHRvIHRo
ZQotICAgIC8vIGxlZnQgb2YgbV9wb2ludC4gV2UgZXhwcmVzcyBpdCB0aGlzIHdheSBzbyB0aGF0
IGlmIHdlJ3JlIHVzaW5nIHRoZSBTa2lhCi0gICAgLy8gZHJhd2luZyBwYXRoIHdlIGNhbiB1c2Ug
ZmxvYXRpbmctcG9pbnQgcG9zaXRpb25pbmcsIGV2ZW4gdGhvdWdoIHdlIGhhdmUKLSAgICAvLyB0
byB1c2UgaW50ZWdlciBwb3NpdGlvbmluZyBpbiB0aGUgR0RJIHBhdGguCi0gICAgYm9vbCBkcmF3
R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQqIGdseXBocywgY29uc3QgaW50KiBhZHZh
bmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsKKyAgICAvLyBsZWZ0IG9mIG1fcG9pbnQu
CisgICAgdm9pZCBkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQqIGdseXBocywg
Y29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsKIAogIHByaXZh
dGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IGVzdGltYXRlVGV4dEJvdW5kcygpOwpAQCAtMjA2LDEw
ICsxMDIsNiBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlciA6IHB1CiAgICAg
Y29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhCdWZmZXI7CiAgICAgaW50IG1fZnJvbTsKICAgICBp
bnQgbV9udW1HbHlwaHM7Ci0KLSAgICAvLyBXaGVuIG1fdXNlR2RpIGlzIHNldCwgdGhpcyBzdG9y
ZXMgdGhlIHByZXZpb3VzIEhGT05UIHNlbGVjdGVkIGludG8gdGhlCi0gICAgLy8gbV9oZGMgc28g
d2UgY2FuIHJlc3RvcmUgaXQuCi0gICAgSEdESU9CSiBtX29sZEZvbnQ7ICAvLyBGb3IgcmVzdG9y
aW5nIHRoZSBEQyB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCiB9OwogCiBUcmFuc3BhcmVuY3lBd2Fy
ZUdseXBoUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoCkBAIC0yMjMsMjEg
KzExNSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpUcmFuc3BhcmUKICAgICAs
IG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZmZXIpCiAgICAgLCBtX2Zyb20oZnJvbSkKICAgICAsIG1f
bnVtR2x5cGhzKG51bUdseXBocykKLSAgICAsIG1fb2xkRm9udCgwKQotewotICAgIGluaXQoKTsK
LQotICAgIGlmIChtX2hkYykKLSAgICAgICAgbV9vbGRGb250ID0gOjpTZWxlY3RPYmplY3QobV9o
ZGMsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSk7Ci19Ci0KLVRyYW5zcGFyZW5jeUF3
YXJlR2x5cGhQYWludGVyOjp+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIoKQogewotICAg
IGlmIChtX3VzZUdESSAmJiBtX2hkYykKLSAgICAgICAgOjpTZWxlY3RPYmplY3QobV9oZGMsIG1f
b2xkRm9udCk7CiB9CiAKLQogLy8gRXN0aW1hdGVzIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIGdp
dmVuIHRleHQuIFRoaXMgaXMgY29waWVkIGZyb20KIC8vIEZvbnRDR1dpbi5jcHAsIGl0IGlzIHBv
c3NpYmxlLCBidXQgYSBsb3QgbW9yZSB3b3JrLCB0byBnZXQgdGhlIHByZWNpZGUKIC8vIGJvdW5k
cy4KQEAgLTI1NCw0NyArMTM0LDE1IEBAIEludFJlY3QgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBh
aW50ZXI6OmUKICAgICAgICAgICAgICAgICAgICBmb250TWV0cmljcy5saW5lU3BhY2luZygpKTsg
CiB9CiAKLWJvb2wgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMoaW50
IG51bUdseXBocywKK3ZvaWQgVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlw
aHMoaW50IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBzdGFydEFkdmFuY2UpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX3VzZUdESSkgewotICAgICAgICBTa1BvaW50IG9yaWdpbiA9IG1fcG9p
bnQ7Ci0gICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0VG9TY2FsYXIoc3RhcnRBZHZhbmNlKTsK
LSAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNzQ29udGV4dCwgbV9mb250LT5wbGF0Zm9y
bURhdGEoKS5oZm9udCgpLAotICAgICAgICAgICAgICAgICAgICAgIG51bUdseXBocywgZ2x5cGhz
LCBhZHZhbmNlcywgMCwgJm9yaWdpbik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIGlmICghbV9ncmFwaGljc0NvbnRleHQgfHwgIW1faGRjKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIC8vIFdpbmRvd3MnIG9yaWdpbiBpcyB0aGUgdG9wLWxlZnQgb2YgdGhlIGJvdW5k
aW5nIGJveCwgc28gd2UgaGF2ZQotICAgIC8vIHRvIHN1YnRyYWN0IG9mZiB0aGUgZm9udCBhc2Nl
bnQgdG8gZ2V0IGl0LgotICAgIGludCB4ID0gbHJvdW5kZihtX3BvaW50LngoKSArIHN0YXJ0QWR2
YW5jZSk7Ci0gICAgaW50IHkgPSBscm91bmRmKG1fcG9pbnQueSgpIC0gbV9mb250LT5mb250TWV0
cmljcygpLmFzY2VudCgpKTsKLQotICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93
IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCi0gICAgLy8gYXJlIG9w
YXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsK
LSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENvbG9y
U3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAobV9ncmFwaGljc0NvbnRleHQtPmdldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNw
YWNlKSkgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNoYWRvdyBhbmQgdGhpcyBjb2RlIGlz
IHJlYWNoZWQsIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdygpCi0gICAgICAgIC8vIHdp
bGwgaGF2ZSBhbHJlYWR5IHJldHVybmVkIHRydWUgZHVyaW5nIHRoZSBjdG9yIGluaXRpYXRpemF0
aW9uIG9mIG1fdXNlR0RJCi0gICAgICAgIEFTU0VSVChzaGFkb3dDb2xvci5hbHBoYSgpID09IDI1
NSk7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoaWNzQ29udGV4dC0+ZmlsbENvbG9yKCkuYWxwaGEo
KSA9PSAyNTUpOwotICAgICAgICBBU1NFUlQoc2hhZG93Qmx1ciA9PSAwKTsKLSAgICAgICAgQ09M
T1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoU2tDb2xvclNldEFSR0Io
MjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3Iu
Ymx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVkVGV4dENvbG9yID0gR2V0VGV4dENvbG9y
KG1faGRjKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCB0ZXh0Q29sb3IpOwotICAgICAg
ICBFeHRUZXh0T3V0KG1faGRjLCB4ICsgc2hhZG93T2Zmc2V0LndpZHRoKCksIHkgKyBzaGFkb3dP
ZmZzZXQuaGVpZ2h0KCksIEVUT19HTFlQSF9JTkRFWCwgMCwgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBocywgJmFkdmFuY2VzWzBdKTsKLSAgICAg
ICAgU2V0VGV4dENvbG9yKG1faGRjLCBzYXZlZFRleHRDb2xvcik7Ci0gICAgfQotICAgIAotICAg
IHJldHVybiAhIUV4dFRleHRPdXQobV9oZGMsIHgsIHksIEVUT19HTFlQSF9JTkRFWCwgMCwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBocywgJmFk
dmFuY2VzWzBdKTsKKyAgICBTa1BvaW50IG9yaWdpbiA9IG1fcG9pbnQ7CisgICAgb3JpZ2luLmZY
ICs9IFNrRmxvYXRUb1NjYWxhcihzdGFydEFkdmFuY2UpOworICAgIHBhaW50U2tpYVRleHQobV9n
cmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSwKKyAgICAgICAg
ICAgICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7CiB9CiAK
IGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlciA6IHB1YmxpYyBUcmFuc3Bh
cmVuY3lBd2FyZUZvbnRQYWludGVyIHsKQEAgLTMwNCwxMCArMTUyLDYgQEAgY2xhc3MgVHJhbnNw
YXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRleHRSdW4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgZnJvbSwgaW50IHRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgflRyYW5zcGFyZW5jeUF3YXJlVW5pc2Ny
aWJlUGFpbnRlcigpOwotCi0gICAgLy8gVW5pc2NpYmUgd2lsbCBkcmF3IGRpcmVjdGx5IGludG8g
b3VyIGJ1ZmZlciwgc28gd2UgbmVlZCB0byBleHBvc2Ugb3VyIERDLgotICAgIEhEQyBoZGMoKSBj
b25zdCB7IHJldHVybiBtX2hkYzsgfQogCiAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIEludFJlY3Qg
ZXN0aW1hdGVUZXh0Qm91bmRzKCk7CkBAIC0zMzAsMTEgKzE3NCw2IEBAIFRyYW5zcGFyZW5jeUF3
YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnMKICAgICAsIG1fZnJvbShmcm9tKQogICAgICwgbV90
byh0bykKIHsKLSAgICBpbml0KCk7Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFp
bnRlcjo6flRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcigpCi17CiB9CiAKIEludFJl
Y3QgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyOjplc3RpbWF0ZVRleHRCb3VuZHMo
KQpAQCAtNDI1LDIwICsyNjQsNyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzV2luKEdyYXBoaWNz
Q29udGV4CiAgICAgICAgICAgICAgICAgYWR2YW5jZXNbaV0gPSAwOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gQWN0dWFsbHkgZHJhdyB0aGUgZ2x5cGhzICh3aXRoIHJldHJ5IG9uIGZhaWx1cmUp
LgotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpbnQgZXhlY3V0
aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4ZWN1dGlvbnMpIHsKLSAgICAgICAgICAgIHN1
Y2Nlc3MgPSBwYWludGVyLmRyYXdHbHlwaHMoY3VyTGVuLCAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNb
MF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54KCkgLSBjdXJyZW50V2lkdGgpOwotICAgICAg
ICAgICAgaWYgKCFzdWNjZXNzICYmIGV4ZWN1dGlvbnMgPT0gMCkgewotICAgICAgICAgICAgICAg
IC8vIEFzayB0aGUgYnJvd3NlciB0byBsb2FkIHRoZSBmb250IGZvciB1cyBhbmQgcmV0cnkuCi0g
ICAgICAgICAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmVuc3VyZUZvbnRMb2FkZWQoZm9udC0+cGxh
dGZvcm1EYXRhKCkuaGZvbnQoKSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghc3Vj
Y2VzcykKLSAgICAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGRyYXcgdGhlIGdseXBocyBh
ZnRlciBzZWNvbmQgYXR0ZW1wdCIpOworICAgICAgICBwYWludGVyLmRyYXdHbHlwaHMoY3VyTGVu
LCAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54KCkg
LSBjdXJyZW50V2lkdGgpOwogICAgIH0KIH0KIApAQCAtNDkyLDM3ICszMTgsOSBAQCB2b2lkIEZv
bnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRlCiAgICAgaWYgKCFhbHBoYSAmJiBncmFw
aGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRTdHJva2VTdHlsZSgpID09IE5vU3Ry
b2tlKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFuc3BhcmVuY3lBd2FyZVVuaXNjcmliZVBh
aW50ZXIgcGFpbnRlcihncmFwaGljc0NvbnRleHQsIHRoaXMsIHJ1biwgZnJvbSwgdG8sIHBvaW50
KTsKLQotICAgIEhEQyBoZGMgPSBwYWludGVyLmhkYygpOwotICAgIGlmICh3aW5kb3dzQ2FuSGFu
ZGxlVGV4dERyYXdpbmcoZ3JhcGhpY3NDb250ZXh0KSAmJiAhaGRjKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBUT0RPKG1hcnVlbCk6IGh0dHA6Ly9iLzcwMDQ2NCBTZXRUZXh0Q29sb3IgZG9l
c24ndCBzdXBwb3J0IHRyYW5zcGFyZW5jeS4KLSAgICAvLyBFbmZvcmNlIG5vbi10cmFuc3BhcmVu
dCBjb2xvci4KLSAgICBjb2xvciA9IFNrQ29sb3JTZXRSR0IoU2tDb2xvckdldFIoY29sb3IpLCBT
a0NvbG9yR2V0Ryhjb2xvciksIFNrQ29sb3JHZXRCKGNvbG9yKSk7Ci0gICAgaWYgKGhkYykgewot
ICAgICAgICBTZXRUZXh0Q29sb3IoaGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xvcikp
OwotICAgICAgICBTZXRCa01vZGUoaGRjLCBUUkFOU1BBUkVOVCk7Ci0gICAgfQotCi0gICAgLy8g
SWYgdGhlcmUgaXMgYSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZpbGwgY29sb3IgYW5k
IHNoYWRvdyBjb2xvciAKLSAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0aG91dCBza2lhLiAK
LSAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwotICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAg
Q29sb3Igc2hhZG93Q29sb3I7Ci0gICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotICAg
IGlmIChncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKSAmJiB3aW5kb3dzQ2FuSGFuZGxlRHJhd1Rl
eHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgewotICAgICAgICBDT0xPUlJFRiB0ZXh0Q29sb3Ig
PSBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0NvbG9y
LnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKLSAgICAg
ICAgQ09MT1JSRUYgc2F2ZWRUZXh0Q29sb3IgPSBHZXRUZXh0Q29sb3IoaGRjKTsKLSAgICAgICAg
U2V0VGV4dENvbG9yKGhkYywgdGV4dENvbG9yKTsKLSAgICAgICAgc3RhdGUuZHJhdyhncmFwaGlj
c0NvbnRleHQsIGhkYywgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC54KCkpICsgc2hhZG93T2Zmc2V0
LndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50Pihwb2ludC55KCkg
LSBmb250TWV0cmljcygpLmFzY2VudCgpKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSwgZnJvbSwg
dG8pOwotICAgICAgICBTZXRUZXh0Q29sb3IoaGRjLCBzYXZlZFRleHRDb2xvcik7IAotICAgIH0K
LQogICAgIC8vIFVuaXNjcmliZSBjb3VudHMgdGhlIGNvb3JkaW5hdGVzIGZyb20gdGhlIHVwcGVy
IGxlZnQsIHdoaWxlIFdlYktpdCB1c2VzCiAgICAgLy8gdGhlIGJhc2VsaW5lLCBzbyB3ZSBoYXZl
IHRvIHN1YnRyYWN0IG9mZiB0aGUgYXNjZW50LgorICAgIEhEQyBoZGMgPSAwOwogICAgIHN0YXRl
LmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIGxyb3VuZGYocG9pbnQueCgpKSwgbHJvdW5kZihw
b2ludC55KCkgLSBmb250TWV0cmljcygpLmFzY2VudCgpKSwgZnJvbSwgdG8pOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxw
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAJKHJldmlzaW9uIDkxOTM3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw2IEBAIHZvaWQgVW5pc2NyaWJlSGVscGVyOjpkcmF3
KEdyYXBoaWNzQ29udGUKICAgICBIR0RJT0JKIG9sZEZvbnQgPSAwOwogICAgIGludCBjdXJYID0g
eDsKICAgICBib29sIGZpcnN0UnVuID0gdHJ1ZTsKLSAgICBib29sIHVzZVdpbmRvd3NEcmF3aW5n
ID0gd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKGdyYXBoaWNzQ29udGV4dCk7CiAKICAgICBm
b3IgKHNpemVfdCBzY3JlZW5JbmRleCA9IDA7IHNjcmVlbkluZGV4IDwgbV9ydW5zLnNpemUoKTsg
c2NyZWVuSW5kZXgrKykgewogICAgICAgICBpbnQgaXRlbUluZGV4ID0gbV9zY3JlZW5PcmRlcltz
Y3JlZW5JbmRleF07CkBAIC0zNDgsNDMgKzM0NywyMiBAQCB2b2lkIFVuaXNjcmliZUhlbHBlcjo6
ZHJhdyhHcmFwaGljc0NvbnRlCiAgICAgICAgICAgICAvLyBQYXNzIDAgaW4gd2hlbiB0aGVyZSBp
cyBubyBqdXN0aWZpY2F0aW9uLgogICAgICAgICAgICAgY29uc3QgaW50KiBqdXN0aWZ5ID0gc2hh
cGluZy5tX2p1c3RpZnkuc2l6ZSgpID09IDAgPyAwIDogJnNoYXBpbmcubV9qdXN0aWZ5W2Zyb21H
bHlwaF07CiAKLSAgICAgICAgICAgIGlmICh1c2VXaW5kb3dzRHJhd2luZykgewotICAgICAgICAg
ICAgICAgIGlmIChmaXJzdFJ1bikgewotICAgICAgICAgICAgICAgICAgICBvbGRGb250ID0gU2Vs
ZWN0T2JqZWN0KGRjLCBzaGFwaW5nLm1faGZvbnQpOwotICAgICAgICAgICAgICAgICAgICBmaXJz
dFJ1biA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICBTZWxlY3RPYmplY3QoZGMsIHNoYXBpbmcubV9oZm9udCk7Ci0gICAgICAgICAgICB9Ci0KICAg
ICAgICAgICAgIC8vIEZvbnRzIHdpdGggZGlmZmVyZW50IGFzY2VudHMgY2FuIGJlIHVzZWQgdG8g
cmVuZGVyIGRpZmZlcmVudAogICAgICAgICAgICAgLy8gcnVucy4gICdBY3Jvc3MtcnVucycgeS1j
b29yZGluYXRlIGNvcnJlY3Rpb24gbmVlZHMgdG8gYmUKICAgICAgICAgICAgIC8vIGFkanVzdGVk
IGZvciBlYWNoIGZvbnQuCiAgICAgICAgICAgICBib29sIHRleHRPdXRPayA9IGZhbHNlOwogICAg
ICAgICAgICAgZm9yIChpbnQgZXhlY3V0aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4ZWN1
dGlvbnMpIHsKLSAgICAgICAgICAgICAgICBpZiAodXNlV2luZG93c0RyYXdpbmcpIHsKLSAgICAg
ICAgICAgICAgICAgICAgSFJFU1VMVCBociA9IFNjcmlwdFRleHRPdXQoZGMsIHNoYXBpbmcubV9z
Y3JpcHRDYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3VyWCArIGlubmVyT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB5IC0gc2hhcGluZy5tX2FzY2VudE9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgJml0ZW0uYSwgMCwgMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcubV9n
bHlwaHNbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2x5cGhDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnNoYXBpbmcubV9hZHZhbmNlW2Zyb21HbHlwaF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zmc2V0c1tmcm9t
R2x5cGhdKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dE91dE9rID0gKGhyID09IFNfT0spOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFNrUG9pbnQgb3Jp
Z2luOwotICAgICAgICAgICAgICAgICAgICBvcmlnaW4uZlggPSBjdXJYICsgKyBpbm5lck9mZnNl
dDsKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2luLmZZID0geSArIG1fYXNjZW50OwotICAgICAg
ICAgICAgICAgICAgICBwYWludFNraWFUZXh0KGdyYXBoaWNzQ29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaGFwaW5nLm1faGZvbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2x5cGhDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmc2hhcGluZy5tX2dseXBoc1tmcm9tR2x5cGhdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zmc2V0c1tmcm9tR2x5cGhdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvcmlnaW4pOwotICAgICAgICAgICAg
ICAgICAgICB0ZXh0T3V0T2sgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBTa1BvaW50IG9yaWdpbjsKKyAgICAgICAgICAgICAgICBvcmlnaW4uZlggPSBjdXJYICsg
KyBpbm5lck9mZnNldDsKKyAgICAgICAgICAgICAgICBvcmlnaW4uZlkgPSB5ICsgbV9hc2NlbnQ7
CisgICAgICAgICAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaGFwaW5nLm1faGZvbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnbHlwaENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JnNoYXBpbmcubV9nbHlwaHNbZnJvbUdseXBoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnNoYXBpbmcubV9vZmZzZXRzW2Zyb21HbHlwaF0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmb3JpZ2luKTsKKyAgICAgICAgICAgICAgICB0ZXh0T3V0T2sgPSB0cnVl
OwogCiAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0T3V0T2sgJiYgMCA9PSBleGVjdXRpb25zKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIFRleHRPdXQgaXMgY2FsbGVkIGZyb20gdGhlIHJl
bmRlcmVyIGl0IG1pZ2h0IGZhaWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAkocmV2
aXNpb24gOTE5MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NjksMTcgKzU2OSw2IEBA
IGNvbnN0IFNrQml0bWFwKiBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiaXQKICAgICByZXR1cm4gJm1f
Y2FudmFzLT5nZXREZXZpY2UoKS0+YWNjZXNzQml0bWFwKGZhbHNlKTsKIH0KIAotYm9vbCBQbGF0
Zm9ybUNvbnRleHRTa2lhOjppc05hdGl2ZUZvbnRSZW5kZXJpbmdBbGxvd2VkKCkKLXsKLSNpZiBF
TkFCTEUoU0tJQV9URVhUKQotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCi0gICAgaWYgKHVzZVNr
aWFHUFUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBza2lhOjpTdXBwb3J0
c1BsYXRmb3JtUGFpbnQobV9jYW52YXMpOwotI2VuZGlmCi19Ci0KIHZvaWQgUGxhdGZvcm1Db250
ZXh0U2tpYTo6Z2V0SW1hZ2VSZXNhbXBsaW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNp
emUqIGRzdFNpemUpIGNvbnN0CiB7CiAgICAgKnNyY1NpemUgPSBtX2ltYWdlUmVzYW1wbGluZ0hp
bnRTcmNTaXplOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHJldmlzaW9uIDkxOTM3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2NywxMSArMTY3LDYgQEAgcHVibGljOgogICAgIGJv
b2wgcHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByaW50aW5nOyB9CiAgICAgdm9pZCBzZXRQ
cmludGluZyhib29sIHApIHsgbV9wcmludGluZyA9IHA7IH0KIAotICAgIC8vIFJldHVybnMgaWYg
dGhlIGNvbnRleHQgYWxsb3dzIHJlbmRlcmluZyBvZiBmb250cyB1c2luZyBuYXRpdmUgcGxhdGZv
cm0KLSAgICAvLyBBUElzLiBJZiBmYWxzZSBpcyByZXR1cm5lZCBmb250IHJlbmRlcmluZyBpcyBw
ZXJmb3JtZWQgdXNpbmcgdGhlIHNraWEKLSAgICAvLyB0ZXh0IGRyYXdpbmcgQVBJcy4KLSAgICBi
b29sIGlzTmF0aXZlRm9udFJlbmRlcmluZ0FsbG93ZWQoKTsKLQogICAgIHZvaWQgZ2V0SW1hZ2VS
ZXNhbXBsaW5nSGludChJbnRTaXplKiBzcmNTaXplLCBGbG9hdFNpemUqIGRzdFNpemUpIGNvbnN0
OwogICAgIHZvaWQgc2V0SW1hZ2VSZXNhbXBsaW5nSGludChjb25zdCBJbnRTaXplJiBzcmNTaXpl
LCBjb25zdCBGbG9hdFNpemUmIGRzdFNpemUpOwogICAgIHZvaWQgY2xlYXJJbWFnZVJlc2FtcGxp
bmdIaW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Nr
aWFGb250V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1NraWFGb250V2luLmNwcAkocmV2aXNpb24gOTE5MzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNTggKzQzLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIHdpbmRv
d3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhHcmFwaGljc0NvbnRleHQgKmNvbnRleHQpCi17Ci0g
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLQotICAg
IGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IsIHNoYWRvd0NvbG9yU3BhY2UpOwotICAgIHJldHVybiAhaGFzU2hh
ZG93IHx8ICghc2hhZG93Qmx1ciAmJiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChj
b250ZXh0LT5maWxsQ29sb3IoKS5hbHBoYSgpID09IDI1NSkpOwotfQotCi1ib29sIHdpbmRvd3ND
YW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgaWYg
KCF3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KGNvbnRleHQpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3Igc2hhZG93IGVmZmVjdHMuCi0g
ICAgaWYgKCF3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coY29udGV4dCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIHdpbmRvd3NDYW5I
YW5kbGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQot
ewotICAgIC8vIENoZWNrIGZvciBub24tdHJhbnNsYXRpb24gdHJhbnNmb3Jtcy4gU29tZXRpbWVz
IHpvb21zIHdpbGwgbG9vayBiZXR0ZXIgaW4KLSAgICAvLyBTa2lhLCBhbmQgc29tZXRpbWVzIGJl
dHRlciBpbiBXaW5kb3dzLiBUaGUgbWFpbiBwcm9ibGVtIGlzIHRoYXQgem9vbWluZwotICAgIC8v
IGluIHVzaW5nIFNraWEgd2lsbCBzaG93IHlvdSB0aGUgaGludGVkIG91dGxpbmVzIGZvciB0aGUg
c21hbGxlciBzaXplLAotICAgIC8vIHdoaWNoIGxvb2sgd2VpcmQuIEFsbCBlbHNlIGJlaW5nIGVx
dWFsLCBpdCdzIGJldHRlciB0byB1c2UgV2luZG93cycgdGV4dAotICAgIC8vIGRyYXdpbmcsIHNv
IHdlIGRvbid0IGNoZWNrIGZvciB6b29tcy4KLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1h
dHJpeCA9IGNvbnRleHQtPmdldENUTSgpOwotICAgIGlmIChtYXRyaXguYigpICE9IDAgfHwgbWF0
cml4LmMoKSAhPSAwKSAgLy8gQ2hlY2sgZm9yIHNrZXcuCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIC8vIENoZWNrIGZvciBzdHJva2UgZWZmZWN0cy4KLSAgICBpZiAoY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPmdldFRleHREcmF3aW5nTW9kZSgpICE9IFRleHRNb2RlRmlsbCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIGdyYWRpZW50cy4KLSAgICBp
ZiAoY29udGV4dC0+ZmlsbEdyYWRpZW50KCkgfHwgY29udGV4dC0+c3Ryb2tlR3JhZGllbnQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gQ2hlY2sgZm9yIHBhdHRlcm5zLgotICAg
IGlmIChjb250ZXh0LT5maWxsUGF0dGVybigpIHx8IGNvbnRleHQtPnN0cm9rZVBhdHRlcm4oKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKS0+aXNOYXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogc3RhdGljIHZvaWQgc2tpYURyYXdUZXh0KFNr
Q2FudmFzKiBjYW52YXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2tQb2ludCYg
cG9pbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2tQYWludCogcGFpbnQsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdp
bi5oCShyZXZpc2lvbiA5MTkzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvU2tpYUZvbnRXaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzksMzMgKzM5LDYgQEAgY2xh
c3MgU2tQb2ludDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgUGxhdGZvcm1Db250ZXh0U2tpYTsKLQotLy8gVGhlIGZ1bmN0aW9ucyBiZWxvdyBh
cmUgdXNlZCBmb3IgbW9yZSBjb21wbGV4IGZvbnQgZHJhd2luZyAoZWZmZWN0cyBzdWNoIGFzCi0v
LyBzdHJva2luZyBhbmQgbW9yZSBjb21wbGV4IHRyYW5zZm9ybXMpIHRoYW4gV2luZG93cyBzdXBw
b3J0cyBkaXJlY3RseS4gIFNpbmNlIAotLy8gV2luZG93cyBkcmF3aW5nIGlzIGZhc3RlciB5b3Ug
c2hvdWxkIHVzZSB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcgZmlyc3QgdG8gCi0vLyBjaGVj
ayBpZiB1c2luZyBTa2lhIGlzIHJlcXVpcmVkIGF0IGFsbC4KLS8vIE5vdGUgdGhhdCB0aGUgdGV4
dCB3aWxsIGxvb2sgZGlmZmVyZW50IChubyBDbGVhclR5cGUpIHNvIHRoaXMgc2hvdWxkIG9ubHkg
YmUKLS8vIHVzZWQgd2hlbiBuZWNlc3NhcnkuCi0vLwotLy8gV2hlbiB5b3UgY2FsbCBhIFNraWEq
IHRleHQgZHJhd2luZyBmdW5jdGlvbiwgdmFyaW91cyBnbHlwaCBvdXRsaW5lcyB3aWxsIGJlCi0v
LyBjYWNoZWQuIEFzIGEgcmVzdWx0LCB5b3Ugc2hvdWxkIGNhbGwgU2tpYVdpbk91dGxpbmVDYWNo
ZTo6cmVtb3ZlUGF0aHNGb3JGb250Ci0vLyB3aGVuIHRoZSBmb250IGlzIGRlc3Ryb3llZCBzbyB0
aGF0IHRoZSBjYWNoZSBkb2VzIG5vdCBvdXRsaXZlIHRoZSBmb250IChzaW5jZQotLy8gdGhlIEhG
T05UcyBhcmUgcmVjeWNsZWQpLgotLy8KLS8vIFJlbWVtYmVyIHRoYXQgU2tpYSdzIHRleHQgZHJh
d2luZyBvcmlnaW4gaXMgdGhlIGJhc2VsaW5lLCBsaWtlIFdlYktpdCwgbm90Ci0vLyB0aGUgdG9w
LCBsaWtlIFdpbmRvd3MuCi0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsbENvbG9yIGFuZCBz
aGFkb3dDb2xvciBhcmUgb3BhcXVlIGFuZCB0aGUgdGV4dC1zaGFkb3cKLS8vIGlzIG5vdCBibHVy
cmVkLgotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coR3JhcGhpY3NDb250ZXh0
Kik7Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJlbmRlcmluZyBpcyByZWNv
bW1lbmRlZC4KLWJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKEdyYXBoaWNzQ29udGV4
dCopOwotCi0vLyBSZXR1cm5zIHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcgaXMgcmVj
b21tZW5kZWQgaWYgc2hhZG93cyBhcmUKLS8vIGRpc3JlZ2FyZGVkLgotYm9vbCB3aW5kb3dzQ2Fu
SGFuZGxlVGV4dERyYXdpbmdXaXRob3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwogCiAvLyBO
b3RlIHRoYXQgdGhlIG9mZnNldHMgcGFyYW1ldGVyIGlzIG9wdGlvbmFsLiAgSWYgbm90IE5VTEwg
aXQgcmVwcmVzZW50cyBhCiAvLyBwZXIgZ2x5cGggb2Zmc2V0IChzdWNoIGFzIHJldHVybmVkIGJ5
IFNjcmlwdFBsYWNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9uKS4KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkx
OTM5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTEtMDctMjggIE1pa2UgUmVlZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAg
ICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdESSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1
LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTIwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorCiAyMDExLTA3
LTI4ICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBOZXcgZXhwZWN0YXRpb25zIGFmdGVyIHI5MTkyNApJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNp
b24gOTE5MzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4NjMsNiArMTg2Myw4MyBAQCBCVUdDUjQyODc1
IFdPTlRGSVggU0tJUCA6IHNwdXRuaWsgPSBURVhUCiAKIEJVR1dLMzg3MDUgOiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3NhbmRib3gtaW5oZXJpdC10by1pbml0aWFsLWRvY3VtZW50LTIuaHRtbCA9IFRF
WFQKIAorLy8gU3dpdGNoaW5nIHdpbmRvd3Mgb3ZlciBmcm9tIEdESSB0byBTa2lhIGZvciBhbGwg
dGV4dCByZW5kZXJpbmcuCisvLyBXaGVuIHRoYXQgbGFuZHMsIHdlIHdpbGwgcmViYXNlbGluZSB0
aGVzZSBpbWFnZXMuCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvYm9yZGVycy9ib3JkZXItYW50aWFs
aWFzaW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3JlZmxlY3Rpb25zL3Jl
ZmxlY3Rpb24tb3ZlcmZsb3ctaGlkZGVuLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBm
YXN0L3JlcGFpbnQvcmVmbGVjdGlvbi1yZWRyYXcuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IGZhc3QvdGV4dC9hdHN1aS1zcGFjaW5nLWZlYXR1cmVzLmh0bWwgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBmYXN0L3RleHQvY2ctdnMtYXRzdWkuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IGZhc3QvdGV4dC9jb21wbGV4LXRleHQtb3BhY2l0eS5odG1sID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvY29tcGxleC1jaGFyYWN0ZXItYmFz
ZWQtZmFsbGJhY2suaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2RhbmRhLXNwYWNlLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0
L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWJhaHQtc3BhY2UuaHRtbCA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktbGluZS1icmVha3MuaHRtbCA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IG1lZGlhL2F1ZGlvLXJlcGFpbnQuaHRtbCA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IHBsYXRmb3JtL3dpbi9mYXN0L3RleHQvdW5pc2NyaWJlLW1pc3Np
bmctZ2x5cGguaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS1T
RS90ZXh0LWludHJvLTA1LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1T
VkctMS4xL2FuaW1hdGUtZWxlbS0zNy10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2
Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tMzktdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBX
SU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTQwLXQuc3ZnID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS00MS10LnN2ZyA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNDYtdC5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTYw
LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUt
ZWxlbS02MS10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9h
bmltYXRlLWVsZW0tNjItdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNW
Ry0xLjEvYW5pbWF0ZS1lbGVtLTYzLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02NC10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjUtdC5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY2LXQuc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02Ny10LnN2ZyA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjgt
dC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1l
bGVtLTY5LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2Fu
aW1hdGUtZWxlbS03MC10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZH
LTEuMS9hbmltYXRlLWVsZW0tODEtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
VzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTgyLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS04My10LnN2ZyA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1ncmFkLTA3LWIuc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL3N0cnVjdC1mcmFnLTAyLXQuc3ZnID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL3RleHQtYWxpZ24tMDQtYi5z
dmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvdGV4dC1hbGlnbi0w
NS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWFs
aWduLTA2LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL3Rl
eHQtcGF0aC0wMS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEu
MS90ZXh0LXRleHQtMDUtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYXMtYmFj
a2dyb3VuZC1pbWFnZS9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC5odG1sID0gSU1BR0UKK0JV
R1dLNjUyMDMgV0lOIDogc3ZnL2FzLWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS5odG1sID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL2ZpbHRlcnMvZmVUaWxlLnN2ZyA9IElN
QUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay9maWx0ZXJzL2ZpbHRlclJlZ2lvbnMuc3Zn
ID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvbG9uZ1RleHRPblBhdGgu
c3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dEFuY2hvci5z
dmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0RmVhdHVyZXMu
c3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dExheW91dC5z
dmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0UENEQVRBLnN2
ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRQcm9wZXJ0aWVz
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRQcm9wZXJ0
aWVzMi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0U3R5
bGVzLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jYXJ0by5uZXQvdGV4dGJveC5z
dmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY2FydG8ubmV0L3dpbmRvdy5zdmcgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL2pzLWxhdGUtY2xpcFBhdGgtYW5kLW9i
amVjdC1jcmVhdGlvbi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL2pz
LWxhdGUtY2xpcFBhdGgtY3JlYXRpb24uc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L2N1c3RvbS9saW5raW5nLWEtMDMtYi12aWV3Qm94LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy9jdXN0b20vbGlua2luZy11cmktMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBX
SU4gOiBzdmcvY3VzdG9tL3N2Zy1mb250cy1mYWxsYmFjay54aHRtbCA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHVGV4dEVsZW1lbnQtZG9tLWxlbmd0aEFk
anVzdC1hdHRyLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvZHluYW1pYy11cGRh
dGVzL1NWR1RleHRFbGVtZW50LXN2Z2RvbS1sZW5ndGhBZGp1c3QtcHJvcC5odG1sID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL2hpeGllL21peGVkLzAwOS54bWwgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvdGV4dC9mb3JlaWduT2JqZWN0LXRleHQtY2xpcHBpbmctYnVnLnhtbCA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3NjYWxpbmctZm9udC13aXRoLWdlb21l
dHJpYy1wcmVjaXNpb24uaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3Rl
eHQtYWxpZ24tMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0
LWFsaWduLTA1LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3RleHQvdGV4dC1h
bGlnbi0wNi1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3RleHQtaW50
cm8tMDUtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0LXBhdGgt
MDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0UGF0aEJvdW5k
c0J1Zy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS9wYWdlL3pvb20tY29v
cmRzLXZpZXdhdHRyLTAxLWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3pvb20v
cGFnZS96b29tLWhpeGllLW1peGVkLTAwOC54bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvem9vbS9wYWdlL3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHN2Zy96b29tL3RleHQvem9vbS1jb29yZHMtdmlld2F0dHItMDEtYi5zdmcgPSBJTUFH
RQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS90ZXh0L3pvb20taGl4aWUtbWl4ZWQtMDA5Lnht
bCA9IElNQUdFCisKIC8vIFdlYktpdCByb2xsIDU4NzkxOjU4ODA3CiBCVUdDUjQzMzE5IExJTlVY
IERFQlVHIDogZmFzdC9mb3Jtcy9zZWxlY3QtZW1wdHktb3B0aW9uLWhlaWdodC5odG1sID0gUEFT
UyBUSU1FT1VUCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105198</attachid>
            <date>2011-08-25 09:19:03 -0700</date>
            <delta_ts>2011-09-06 08:49:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65203-20110825121901.patch</filename>
            <type>text/plain</type>
            <size>29835</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkzNzkxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTEtMDgtMjUgIE1pa2UgUmVl
ZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAgICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdE
SSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlRm9udFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5QXdh
cmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OlRyYW5zcGFyZW5j
eUF3YXJlR2x5cGhQYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJl
Rm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWlu
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNXaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2NyaWJl
SGVscGVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3Jt
Q29udGV4dFNraWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZv
cm1Db250ZXh0U2tpYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4u
aDoKKwogMjAxMS0wOC0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkzNzc0LgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Gb250Q2hyb21pdW1XaW4uY3BwCShyZXZpc2lvbiA5MzcwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYyLDE0ICs2Miw4IEBAIGJvb2wgY2FudmFzSGFzTXVsdGlwbGVMYXllcnMoY29u
c3QgU2tDYW4KIGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXIgewogcHVibGljOgog
ICAgIFRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXIoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
RmxvYXRQb2ludCYpOwotICAgIH5UcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyKCk7CiAKIHBy
b3RlY3RlZDoKLSAgICAvLyBDYWxsZWQgYnkgb3VyIHN1YmNsYXNzJyBjb25zdHJ1Y3RvciB0byBp
bml0aWFsaXplIEdESSBpZiBuZWNlc3NhcnkuIFRoaXMKLSAgICAvLyBpcyBhIHNlcGFyYXRlIGZ1
bmN0aW9uIHNvIGl0IGNhbiBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHN1YmNsYXNzIGZpbmlzaGVzCi0g
ICAgLy8gY29uc3RydWN0aW9uIChpdCBjYWxscyB2aXJ0dWFsIGZ1bmN0aW9ucykuCi0gICAgdm9p
ZCBpbml0KCk7Ci0KICAgICB2aXJ0dWFsIEludFJlY3QgZXN0aW1hdGVUZXh0Qm91bmRzKCkgPSAw
OwogCiAgICAgLy8gVXNlIHRoZSBjb250ZXh0IGZyb20gdGhlIHRyYW5zcGFyZW5jeSBoZWxwZXIg
d2hlbiBkcmF3aW5nIHdpdGggR0RJLiBJdApAQCAtNzgsMjAgKzcyLDYgQEAgcHJvdGVjdGVkOgog
ICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBtX3BsYXRmb3JtQ29udGV4dDsKIAogICAgIEZs
b2F0UG9pbnQgbV9wb2ludDsKLQotICAgIC8vIFNldCB3aGVuIFdpbmRvd3MgY2FuIGhhbmRsZSB0
aGUgdHlwZSBvZiBkcmF3aW5nIHdlJ3JlIGRvaW5nLgotICAgIGJvb2wgbV91c2VHREk7Ci0KLSAg
ICAvLyBUaGVzZSBtZW1iZXJzIGFyZSB2YWxpZCBvbmx5IHdoZW4gbV91c2VHREkgaXMgc2V0Lgot
ICAgIEhEQyBtX2hkYzsKLSAgICBUcmFuc3BhcmVuY3lXaW4gbV90cmFuc3BhcmVuY3k7Ci0KLXBy
aXZhdGU6Ci0gICAgLy8gQ2FsbCB3aGVuIHdlJ3JlIHVzaW5nIEdESSBtb2RlIHRvIGluaXRpYWxp
emUgdGhlIFRyYW5zcGFyZW5jeVdpbiB0byBoZWxwCi0gICAgLy8gdXMgZHJhdyBHREkgdGV4dC4K
LSAgICB2b2lkIGluaXRpYWxpemVGb3JHREkoKTsKLQotICAgIGJvb2wgbV9jcmVhdGVkVHJhbnNw
YXJlbmN5TGF5ZXI7ICAvLyBXZSBjcmVhdGVkIGEgbGF5ZXIgdG8gZ2l2ZSB0aGUgZm9udCBzb21l
IGFscGhhLgogfTsKIAogVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5
QXdhcmVGb250UGFpbnRlcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCkBAIC05OSw5MCArNzks
OSBAQCBUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuCiAgICAgOiBtX2dy
YXBoaWNzQ29udGV4dChjb250ZXh0KQogICAgICwgbV9wbGF0Zm9ybUNvbnRleHQoY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCkpCiAgICAgLCBtX3BvaW50KHBvaW50KQotICAgICwgbV91c2VHREko
d2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKGNvbnRleHQpKQotICAgICwgbV9oZGMoMCkKLSAg
ICAsIG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyKGZhbHNlKQogewogfQogCi12b2lkIFRyYW5z
cGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OmluaXQoKQotewotICAgIGlmIChtX3VzZUdESSkKLSAg
ICAgICAgaW5pdGlhbGl6ZUZvckdESSgpOwotfQotCi12b2lkIFRyYW5zcGFyZW5jeUF3YXJlRm9u
dFBhaW50ZXI6OmluaXRpYWxpemVGb3JHREkoKQotewotICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5z
YXZlKCk7Ci0gICAgU2tDb2xvciBjb2xvciA9IG1fcGxhdGZvcm1Db250ZXh0LT5lZmZlY3RpdmVG
aWxsQ29sb3IoKTsKLSAgICAvLyBVc2VkIG9ubHkgd2hlbiBtX2NyZWF0ZWRUcmFuc3BhcmVuY3lM
YXllciBpcyB0cnVlLgotICAgIGZsb2F0IGxheWVyQWxwaGEgPSAwLjBmOwotICAgIGlmIChTa0Nv
bG9yR2V0QShjb2xvcikgIT0gMHhGRikgewotICAgICAgICAvLyBXaGVuIHRoZSBmb250IGhhcyBz
b21lIHRyYW5zcGFyZW5jeSwgYXBwbHkgaXQgYnkgY3JlYXRpbmcgYSBuZXcKLSAgICAgICAgLy8g
dHJhbnNwYXJlbmN5IGxheWVyIHdpdGggdGhhdCBvcGFjaXR5IGFwcGxpZWQuIFdlJ2xsIGFjdHVh
bGx5IGNyZWF0ZQotICAgICAgICAvLyBhIG5ldyB0cmFuc3BhcmVuY3kgbGF5ZXIgYWZ0ZXIgd2Ug
Y2FsY3VsYXRlIHRoZSBib3VuZGluZyBib3guCi0gICAgICAgIG1fY3JlYXRlZFRyYW5zcGFyZW5j
eUxheWVyID0gdHJ1ZTsKLSAgICAgICAgbGF5ZXJBbHBoYSA9IFNrQ29sb3JHZXRBKGNvbG9yKSAv
IDI1NS4wZjsKLSAgICAgICAgLy8gVGhlIGNvbG9yIHNob3VsZCBiZSBvcGFxdWUgbm93LgotICAg
ICAgICBjb2xvciA9IFNrQ29sb3JTZXRSR0IoU2tDb2xvckdldFIoY29sb3IpLCBTa0NvbG9yR2V0
Ryhjb2xvciksIFNrQ29sb3JHZXRCKGNvbG9yKSk7Ci0gICAgfQotCi0gICAgVHJhbnNwYXJlbmN5
V2luOjpMYXllck1vZGUgbGF5ZXJNb2RlOwotICAgIEludFJlY3QgbGF5ZXJSZWN0OwotICAgIGlm
IChtX3BsYXRmb3JtQ29udGV4dC0+aXNEcmF3aW5nVG9JbWFnZUJ1ZmZlcigpKSB7Ci0gICAgICAg
IC8vIEFzc3VtZSBpZiB3ZSdyZSBkcmF3aW5nIHRvIGFuIGltYWdlIGJ1ZmZlciB0aGF0IHRoZSBi
YWNrZ3JvdW5kCi0gICAgICAgIC8vIGlzIG5vdCBvcGFxdWUgYW5kIHdlIGhhdmUgdG8gdW5kbyBD
bGVhclR5cGUuIFdlIG1heSB3YW50IHRvCi0gICAgICAgIC8vIGVuaGFuY2UgdGhpcyB0byBhY3R1
YWxseSBjaGVjaywgc2luY2UgaXQgd2lsbCBvZnRlbiBiZSBvcGFxdWUKLSAgICAgICAgLy8gYW5k
IHdlIGNvdWxkIGRvIENsZWFyVHlwZSBpbiB0aGF0IGNhc2UuCi0gICAgICAgIGxheWVyTW9kZSA9
IFRyYW5zcGFyZW5jeVdpbjo6VGV4dENvbXBvc2l0ZTsKLSAgICAgICAgbGF5ZXJSZWN0ID0gZXN0
aW1hdGVUZXh0Qm91bmRzKCk7Ci0gICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5jbGlwKGxheWVy
UmVjdCk7Ci0gICAgICAgIGlmIChtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAg
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGxheWVyQWxwaGEp
OwotCi0gICAgICAgIC8vIFRoZSB0cmFuc3BhcmVuY3kgaGVscGVyIHJlcXVpcmVzIHRoYXQgd2Ug
ZHJhdyB0ZXh0IGluIGJsYWNrIGluCi0gICAgICAgIC8vIHRoaXMgbW9kZSBhbmQgaXQgd2lsbCBh
cHBseSB0aGUgY29sb3IuCi0gICAgICAgIG1fdHJhbnNwYXJlbmN5LnNldFRleHRDb21wb3NpdGVD
b2xvcihjb2xvcik7Ci0gICAgICAgIGNvbG9yID0gU2tDb2xvclNldFJHQigwLCAwLCAwKTsKLSAg
ICB9IGVsc2UgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyIHx8IGNhbnZhc0hhc011bHRp
cGxlTGF5ZXJzKG1fcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKSkpIHsKLSAgICAgICAgLy8gV2hl
biB3ZSdyZSBkcmF3aW5nIGEgd2ViIHBhZ2UsIHdlIGtub3cgdGhlIGJhY2tncm91bmQgaXMgb3Bh
cXVlLAotICAgICAgICAvLyBidXQgaWYgd2UncmUgZHJhd2luZyB0byBhIGxheWVyLCB3ZSBzdGls
bCBuZWVkIGV4dHJhIHdvcmsuCi0gICAgICAgIGxheWVyTW9kZSA9IFRyYW5zcGFyZW5jeVdpbjo6
T3BhcXVlQ29tcG9zaXRlTGF5ZXI7Ci0gICAgICAgIGxheWVyUmVjdCA9IGVzdGltYXRlVGV4dEJv
dW5kcygpOwotICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC0+Y2xpcChsYXllclJlY3QpOwotICAg
ICAgICBpZiAobV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIpCi0gICAgICAgICAgICBtX2dyYXBo
aWNzQ29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihsYXllckFscGhhKTsKLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBDb21tb24gY2FzZSBvZiBkcmF3aW5nIG9udG8gdGhlIGJvdHRvbSBs
YXllciBvZiBhIHdlYiBwYWdlOiB3ZQotICAgICAgICAvLyBrbm93IGV2ZXJ5dGhpbmcgaXMgb3Bh
cXVlIHNvIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KLSAgICAgICAgbGF5ZXJN
b2RlID0gVHJhbnNwYXJlbmN5V2luOjpOb0xheWVyOwotICAgIH0KLQotICAgIC8vIEJ1ZyAyNjA4
OCAtIGluaXQoKSBtaWdodCBmYWlsIGlmIGxheWVyUmVjdCBpcyBpbnZhbGlkLiBHaXZlbiB0aGlz
LCB3ZQotICAgIC8vIG5lZWQgdG8gYmUgY2FyZWZ1bCB0byBjaGVjayBmb3IgbnVsbCBwb2ludGVy
cyBldmVyeXdoZXJlIGFmdGVyIHRoaXMgY2FsbAotICAgIG1fdHJhbnNwYXJlbmN5LmluaXQobV9n
cmFwaGljc0NvbnRleHQsIGxheWVyTW9kZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBUcmFu
c3BhcmVuY3lXaW46OktlZXBUcmFuc2Zvcm0sIGxheWVyUmVjdCk7Ci0KLSAgICAvLyBTZXQgdXAg
dGhlIERDLCB1c2luZyB0aGUgb25lIGZyb20gdGhlIHRyYW5zcGFyZW5jeSBoZWxwZXIuCi0gICAg
aWYgKG1fdHJhbnNwYXJlbmN5LnBsYXRmb3JtQ29udGV4dCgpKSB7Ci0gICAgICAgIG1faGRjID0g
c2tpYTo6QmVnaW5QbGF0Zm9ybVBhaW50KG1fdHJhbnNwYXJlbmN5LnBsYXRmb3JtQ29udGV4dCgp
LT5jYW52YXMoKSk7Ci0gICAgICAgIFNldFRleHRDb2xvcihtX2hkYywgc2tpYTo6U2tDb2xvclRv
Q09MT1JSRUYoY29sb3IpKTsKLSAgICAgICAgU2V0QmtNb2RlKG1faGRjLCBUUkFOU1BBUkVOVCk7
Ci0gICAgfQotfQotCi1UcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjp+VHJhbnNwYXJlbmN5
QXdhcmVGb250UGFpbnRlcigpCi17Ci0gICAgaWYgKCFtX3VzZUdESSB8fCAhbV9ncmFwaGljc0Nv
bnRleHQgfHwgIW1fcGxhdGZvcm1Db250ZXh0KQotICAgICAgICByZXR1cm47ICAvLyBOb3RoaW5n
IHRvIGRvLgotICAgIG1fdHJhbnNwYXJlbmN5LmNvbXBvc2l0ZSgpOwotICAgIGlmIChtX2NyZWF0
ZWRUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgbV9ncmFwaGljc0NvbnRleHQtPmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQtPnJlc3RvcmUoKTsKLSAgICBp
ZiAobV90cmFuc3BhcmVuY3kucGxhdGZvcm1Db250ZXh0KCkpCi0gICAgICAgIHNraWE6OkVuZFBs
YXRmb3JtUGFpbnQobV90cmFuc3BhcmVuY3kucGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpKTsK
LX0KLQogLy8gU3BlY2lhbGl6YXRpb24gZm9yIHNpbXBsZSBHbHlwaEJ1ZmZlciBwYWludGluZy4K
IGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyIDogcHVibGljIFRyYW5zcGFyZW5j
eUF3YXJlRm9udFBhaW50ZXIgewogIHB1YmxpYzoKQEAgLTE5MSwxMyArOTAsMTAgQEAgY2xhc3Mg
VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIgOiBwdQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdseXBoQnVmZmVyJiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgZnJvbSwgaW50IG51bUdseXBocywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAgflRyYW5zcGFyZW5jeUF3YXJl
R2x5cGhQYWludGVyKCk7CiAKICAgICAvLyBEcmF3cyB0aGUgcGFydGlhbCBzdHJpbmcgb2YgZ2x5
cGhzLCBzdGFydGluZyBhdCB8c3RhcnRBZHZhbmNlfCB0byB0aGUKLSAgICAvLyBsZWZ0IG9mIG1f
cG9pbnQuIFdlIGV4cHJlc3MgaXQgdGhpcyB3YXkgc28gdGhhdCBpZiB3ZSdyZSB1c2luZyB0aGUg
U2tpYQotICAgIC8vIGRyYXdpbmcgcGF0aCB3ZSBjYW4gdXNlIGZsb2F0aW5nLXBvaW50IHBvc2l0
aW9uaW5nLCBldmVuIHRob3VnaCB3ZSBoYXZlCi0gICAgLy8gdG8gdXNlIGludGVnZXIgcG9zaXRp
b25pbmcgaW4gdGhlIEdESSBwYXRoLgotICAgIGJvb2wgZHJhd0dseXBocyhpbnQgbnVtR2x5cGhz
LCBjb25zdCBXT1JEKiBnbHlwaHMsIGNvbnN0IGludCogYWR2YW5jZXMsIGZsb2F0IHN0YXJ0QWR2
YW5jZSkgY29uc3Q7CisgICAgLy8gbGVmdCBvZiBtX3BvaW50LgorICAgIHZvaWQgZHJhd0dseXBo
cyhpbnQgbnVtR2x5cGhzLCBjb25zdCBXT1JEKiBnbHlwaHMsIGNvbnN0IGludCogYWR2YW5jZXMs
IGZsb2F0IHN0YXJ0QWR2YW5jZSkgY29uc3Q7CiAKICBwcml2YXRlOgogICAgIHZpcnR1YWwgSW50
UmVjdCBlc3RpbWF0ZVRleHRCb3VuZHMoKTsKQEAgLTIwNiwxMCArMTAyLDYgQEAgY2xhc3MgVHJh
bnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIgOiBwdQogICAgIGNvbnN0IEdseXBoQnVmZmVyJiBt
X2dseXBoQnVmZmVyOwogICAgIGludCBtX2Zyb207CiAgICAgaW50IG1fbnVtR2x5cGhzOwotCi0g
ICAgLy8gV2hlbiBtX3VzZUdkaSBpcyBzZXQsIHRoaXMgc3RvcmVzIHRoZSBwcmV2aW91cyBIRk9O
VCBzZWxlY3RlZCBpbnRvIHRoZQotICAgIC8vIG1faGRjIHNvIHdlIGNhbiByZXN0b3JlIGl0Lgot
ICAgIEhHRElPQkogbV9vbGRGb250OyAgLy8gRm9yIHJlc3RvcmluZyB0aGUgREMgdG8gaXRzIG9y
aWdpbmFsIHN0YXRlLgogfTsKIAogVHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OlRyYW5z
cGFyZW5jeUF3YXJlR2x5cGhQYWludGVyKApAQCAtMjIzLDIxICsxMTUsOSBAQCBUcmFuc3BhcmVu
Y3lBd2FyZUdseXBoUGFpbnRlcjo6VHJhbnNwYXJlCiAgICAgLCBtX2dseXBoQnVmZmVyKGdseXBo
QnVmZmVyKQogICAgICwgbV9mcm9tKGZyb20pCiAgICAgLCBtX251bUdseXBocyhudW1HbHlwaHMp
Ci0gICAgLCBtX29sZEZvbnQoMCkKLXsKLSAgICBpbml0KCk7Ci0KLSAgICBpZiAobV9oZGMpCi0g
ICAgICAgIG1fb2xkRm9udCA9IDo6U2VsZWN0T2JqZWN0KG1faGRjLCBtX2ZvbnQtPnBsYXRmb3Jt
RGF0YSgpLmhmb250KCkpOwotfQotCi1UcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6flRy
YW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyKCkKIHsKLSAgICBpZiAobV91c2VHREkgJiYgbV9o
ZGMpCi0gICAgICAgIDo6U2VsZWN0T2JqZWN0KG1faGRjLCBtX29sZEZvbnQpOwogfQogCi0KIC8v
IEVzdGltYXRlcyB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBnaXZlbiB0ZXh0LiBUaGlzIGlzIGNv
cGllZCBmcm9tCiAvLyBGb250Q0dXaW4uY3BwLCBpdCBpcyBwb3NzaWJsZSwgYnV0IGEgbG90IG1v
cmUgd29yaywgdG8gZ2V0IHRoZSBwcmVjaWRlCiAvLyBib3VuZHMuCkBAIC0yNTQsNDcgKzEzNCwx
NSBAQCBJbnRSZWN0IFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjplCiAgICAgICAgICAg
ICAgICAgICAgZm9udE1ldHJpY3MubGluZVNwYWNpbmcoKSk7IAogfQogCi1ib29sIFRyYW5zcGFy
ZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsCit2b2lkIFRy
YW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdPUkQq
IGdseXBocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50KiBhZHZhbmNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdAogewotICAgIGlmICghbV91c2VH
REkpIHsKLSAgICAgICAgU2tQb2ludCBvcmlnaW4gPSBtX3BvaW50OwotICAgICAgICBvcmlnaW4u
ZlggKz0gU2tGbG9hdFRvU2NhbGFyKHN0YXJ0QWR2YW5jZSk7Ci0gICAgICAgIHBhaW50U2tpYVRl
eHQobV9ncmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICBudW1HbHlwaHMsIGdseXBocywgYWR2YW5jZXMsIDAsICZvcmln
aW4pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fZ3JhcGhpY3ND
b250ZXh0IHx8ICFtX2hkYykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBXaW5kb3dz
JyBvcmlnaW4gaXMgdGhlIHRvcC1sZWZ0IG9mIHRoZSBib3VuZGluZyBib3gsIHNvIHdlIGhhdmUK
LSAgICAvLyB0byBzdWJ0cmFjdCBvZmYgdGhlIGZvbnQgYXNjZW50IHRvIGdldCBpdC4KLSAgICBp
bnQgeCA9IGxyb3VuZGYobV9wb2ludC54KCkgKyBzdGFydEFkdmFuY2UpOwotICAgIGludCB5ID0g
bHJvdW5kZihtX3BvaW50LnkoKSAtIG1fZm9udC0+Zm9udE1ldHJpY3MoKS5hc2NlbnQoKSk7Ci0K
LSAgICAvLyBJZiB0aGVyZSBpcyBhIG5vbi1ibHVyIHNoYWRvdyBhbmQgYm90aCB0aGUgZmlsbCBj
b2xvciBhbmQgc2hhZG93IGNvbG9yIAotICAgIC8vIGFyZSBvcGFxdWUsIGhhbmRsZSB3aXRob3V0
IHNraWEuIAotICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93Qmx1
cjsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3Bh
Y2U7Ci0gICAgaWYgKG1fZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSkpIHsKLSAgICAgICAgLy8g
SWYgdGhlcmUgaXMgYSBzaGFkb3cgYW5kIHRoaXMgY29kZSBpcyByZWFjaGVkLCB3aW5kb3dzQ2Fu
SGFuZGxlRHJhd1RleHRTaGFkb3coKQotICAgICAgICAvLyB3aWxsIGhhdmUgYWxyZWFkeSByZXR1
cm5lZCB0cnVlIGR1cmluZyB0aGUgY3RvciBpbml0aWF0aXphdGlvbiBvZiBtX3VzZUdESQotICAg
ICAgICBBU1NFUlQoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpOwotICAgICAgICBBU1NFUlQo
bV9ncmFwaGljc0NvbnRleHQtPmZpbGxDb2xvcigpLmFscGhhKCkgPT0gMjU1KTsKLSAgICAgICAg
QVNTRVJUKHNoYWRvd0JsdXIgPT0gMCk7Ci0gICAgICAgIENPTE9SUkVGIHRleHRDb2xvciA9IHNr
aWE6OlNrQ29sb3JUb0NPTE9SUkVGKFNrQ29sb3JTZXRBUkdCKDI1NSwgc2hhZG93Q29sb3IucmVk
KCksIHNoYWRvd0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSkpOwotICAgICAgICBD
T0xPUlJFRiBzYXZlZFRleHRDb2xvciA9IEdldFRleHRDb2xvcihtX2hkYyk7Ci0gICAgICAgIFNl
dFRleHRDb2xvcihtX2hkYywgdGV4dENvbG9yKTsKLSAgICAgICAgRXh0VGV4dE91dChtX2hkYywg
eCArIHNoYWRvd09mZnNldC53aWR0aCgpLCB5ICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpLCBFVE9f
R0xZUEhfSU5ERVgsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KCZnbHlwaHNb
MF0pLCBudW1HbHlwaHMsICZhZHZhbmNlc1swXSk7Ci0gICAgICAgIFNldFRleHRDb2xvcihtX2hk
Yywgc2F2ZWRUZXh0Q29sb3IpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gISFFeHRUZXh0T3V0
KG1faGRjLCB4LCB5LCBFVE9fR0xZUEhfSU5ERVgsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
d2NoYXJfdCo+KCZnbHlwaHNbMF0pLCBudW1HbHlwaHMsICZhZHZhbmNlc1swXSk7CisgICAgU2tQ
b2ludCBvcmlnaW4gPSBtX3BvaW50OworICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0VG9TY2FsYXIo
c3RhcnRBZHZhbmNlKTsKKyAgICBwYWludFNraWFUZXh0KG1fZ3JhcGhpY3NDb250ZXh0LCBtX2Zv
bnQtPnBsYXRmb3JtRGF0YSgpLmhmb250KCksCisgICAgICAgICAgICAgICAgICBudW1HbHlwaHMs
IGdseXBocywgYWR2YW5jZXMsIDAsICZvcmlnaW4pOwogfQogCiBjbGFzcyBUcmFuc3BhcmVuY3lB
d2FyZVVuaXNjcmliZVBhaW50ZXIgOiBwdWJsaWMgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRl
ciB7CkBAIC0zMDQsMTAgKzE1Miw2IEBAIGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJl
UGFpbnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0
UnVuJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyb20sIGlu
dCB0bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmxvYXRQ
b2ludCYpOwotICAgIH5UcmFuc3BhcmVuY3lBd2FyZVVuaXNjcmliZVBhaW50ZXIoKTsKLQotICAg
IC8vIFVuaXNjaWJlIHdpbGwgZHJhdyBkaXJlY3RseSBpbnRvIG91ciBidWZmZXIsIHNvIHdlIG5l
ZWQgdG8gZXhwb3NlIG91ciBEQy4KLSAgICBIREMgaGRjKCkgY29uc3QgeyByZXR1cm4gbV9oZGM7
IH0KIAogIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IGVzdGltYXRlVGV4dEJvdW5kcygp
OwpAQCAtMzMwLDExICsxNzQsNiBAQCBUcmFuc3BhcmVuY3lBd2FyZVVuaXNjcmliZVBhaW50ZXI6
OlRyYW5zCiAgICAgLCBtX2Zyb20oZnJvbSkKICAgICAsIG1fdG8odG8pCiB7Ci0gICAgaW5pdCgp
OwotfQotCi1UcmFuc3BhcmVuY3lBd2FyZVVuaXNjcmliZVBhaW50ZXI6On5UcmFuc3BhcmVuY3lB
d2FyZVVuaXNjcmliZVBhaW50ZXIoKQotewogfQogCiBJbnRSZWN0IFRyYW5zcGFyZW5jeUF3YXJl
VW5pc2NyaWJlUGFpbnRlcjo6ZXN0aW1hdGVUZXh0Qm91bmRzKCkKQEAgLTQyNSwyMCArMjY0LDcg
QEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1dpbihHcmFwaGljc0NvbnRleAogICAgICAgICAgICAg
ICAgIGFkdmFuY2VzW2ldID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEFjdHVhbGx5IGRy
YXcgdGhlIGdseXBocyAod2l0aCByZXRyeSBvbiBmYWlsdXJlKS4KLSAgICAgICAgYm9vbCBzdWNj
ZXNzID0gZmFsc2U7Ci0gICAgICAgIGZvciAoaW50IGV4ZWN1dGlvbnMgPSAwOyBleGVjdXRpb25z
IDwgMjsgKytleGVjdXRpb25zKSB7Ci0gICAgICAgICAgICBzdWNjZXNzID0gcGFpbnRlci5kcmF3
R2x5cGhzKGN1ckxlbiwgJmdseXBoc1swXSwgJmFkdmFuY2VzWzBdLCBob3Jpem9udGFsT2Zmc2V0
IC0gcG9pbnQueCgpIC0gY3VycmVudFdpZHRoKTsKLSAgICAgICAgICAgIGlmICghc3VjY2VzcyAm
JiBleGVjdXRpb25zID09IDApIHsKLSAgICAgICAgICAgICAgICAvLyBBc2sgdGhlIGJyb3dzZXIg
dG8gbG9hZCB0aGUgZm9udCBmb3IgdXMgYW5kIHJldHJ5LgotICAgICAgICAgICAgICAgIFBsYXRm
b3JtQnJpZGdlOjplbnN1cmVGb250TG9hZGVkKGZvbnQtPnBsYXRmb3JtRGF0YSgpLmhmb250KCkp
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICBM
T0dfRVJST1IoIlVuYWJsZSB0byBkcmF3IHRoZSBnbHlwaHMgYWZ0ZXIgc2Vjb25kIGF0dGVtcHQi
KTsKKyAgICAgICAgcGFpbnRlci5kcmF3R2x5cGhzKGN1ckxlbiwgJmdseXBoc1swXSwgJmFkdmFu
Y2VzWzBdLCBob3Jpem9udGFsT2Zmc2V0IC0gcG9pbnQueCgpIC0gY3VycmVudFdpZHRoKTsKICAg
ICB9CiB9CiAKQEAgLTQ5MiwzNyArMzE4LDkgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQo
R3JhcGhpY3NDb250ZQogICAgIGlmICghYWxwaGEgJiYgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyIHBhaW50ZXIoZ3JhcGhp
Y3NDb250ZXh0LCB0aGlzLCBydW4sIGZyb20sIHRvLCBwb2ludCk7Ci0KLSAgICBIREMgaGRjID0g
cGFpbnRlci5oZGMoKTsKLSAgICBpZiAod2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKGdyYXBo
aWNzQ29udGV4dCkgJiYgIWhkYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETyhtYXJ1
ZWwpOiBodHRwOi8vYi83MDA0NjQgU2V0VGV4dENvbG9yIGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc3Bh
cmVuY3kuCi0gICAgLy8gRW5mb3JjZSBub24tdHJhbnNwYXJlbnQgY29sb3IuCi0gICAgY29sb3Ig
PSBTa0NvbG9yU2V0UkdCKFNrQ29sb3JHZXRSKGNvbG9yKSwgU2tDb2xvckdldEcoY29sb3IpLCBT
a0NvbG9yR2V0Qihjb2xvcikpOwotICAgIGlmIChoZGMpIHsKLSAgICAgICAgU2V0VGV4dENvbG9y
KGhkYywgc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoY29sb3IpKTsKLSAgICAgICAgU2V0QmtNb2Rl
KGhkYywgVFJBTlNQQVJFTlQpOwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJs
dXIgc2hhZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCi0gICAg
Ly8gYXJlIG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwot
ICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0
LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93
Q29sb3JTcGFjZSkgJiYgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29u
dGV4dCkpIHsKLSAgICAgICAgQ09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09M
T1JSRUYoU2tDb2xvclNldEFSR0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3Iu
Z3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVkVGV4
dENvbG9yID0gR2V0VGV4dENvbG9yKGhkYyk7Ci0gICAgICAgIFNldFRleHRDb2xvcihoZGMsIHRl
eHRDb2xvcik7Ci0gICAgICAgIHN0YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIHN0YXRp
Y19jYXN0PGludD4ocG9pbnQueCgpKSArIHNoYWRvd09mZnNldC53aWR0aCgpLAotICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocG9pbnQueSgpIC0gZm9udE1ldHJpY3MoKS5hc2Nl
bnQoKSkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIGZyb20sIHRvKTsKLSAgICAgICAgU2V0VGV4
dENvbG9yKGhkYywgc2F2ZWRUZXh0Q29sb3IpOyAKLSAgICB9Ci0KICAgICAvLyBVbmlzY3JpYmUg
Y291bnRzIHRoZSBjb29yZGluYXRlcyBmcm9tIHRoZSB1cHBlciBsZWZ0LCB3aGlsZSBXZWJLaXQg
dXNlcwogICAgIC8vIHRoZSBiYXNlbGluZSwgc28gd2UgaGF2ZSB0byBzdWJ0cmFjdCBvZmYgdGhl
IGFzY2VudC4KKyAgICBIREMgaGRjID0gMDsKICAgICBzdGF0ZS5kcmF3KGdyYXBoaWNzQ29udGV4
dCwgaGRjLCBscm91bmRmKHBvaW50LngoKSksIGxyb3VuZGYocG9pbnQueSgpIC0gZm9udE1ldHJp
Y3MoKS5hc2NlbnQoKSksIGZyb20sIHRvKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxw
ZXIuY3BwCShyZXZpc2lvbiA5MzcwNikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1VuaXNjcmliZUhlbHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3
ICsyNjksNiBAQCB2b2lkIFVuaXNjcmliZUhlbHBlcjo6ZHJhdyhHcmFwaGljc0NvbnRlCiAgICAg
SEdESU9CSiBvbGRGb250ID0gMDsKICAgICBpbnQgY3VyWCA9IHg7CiAgICAgYm9vbCBmaXJzdFJ1
biA9IHRydWU7Ci0gICAgYm9vbCB1c2VXaW5kb3dzRHJhd2luZyA9IHdpbmRvd3NDYW5IYW5kbGVU
ZXh0RHJhd2luZyhncmFwaGljc0NvbnRleHQpOwogCiAgICAgZm9yIChzaXplX3Qgc2NyZWVuSW5k
ZXggPSAwOyBzY3JlZW5JbmRleCA8IG1fcnVucy5zaXplKCk7IHNjcmVlbkluZGV4KyspIHsKICAg
ICAgICAgaW50IGl0ZW1JbmRleCA9IG1fc2NyZWVuT3JkZXJbc2NyZWVuSW5kZXhdOwpAQCAtMzQ4
LDQzICszNDcsMjIgQEAgdm9pZCBVbmlzY3JpYmVIZWxwZXI6OmRyYXcoR3JhcGhpY3NDb250ZQog
ICAgICAgICAgICAgLy8gUGFzcyAwIGluIHdoZW4gdGhlcmUgaXMgbm8ganVzdGlmaWNhdGlvbi4K
ICAgICAgICAgICAgIGNvbnN0IGludCoganVzdGlmeSA9IHNoYXBpbmcubV9qdXN0aWZ5LnNpemUo
KSA9PSAwID8gMCA6ICZzaGFwaW5nLm1fanVzdGlmeVtmcm9tR2x5cGhdOwogCi0gICAgICAgICAg
ICBpZiAodXNlV2luZG93c0RyYXdpbmcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RSdW4p
IHsKLSAgICAgICAgICAgICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9iamVjdChkYywgc2hhcGlu
Zy5tX2hmb250KTsKLSAgICAgICAgICAgICAgICAgICAgZmlyc3RSdW4gPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgU2VsZWN0T2JqZWN0KGRjLCBz
aGFwaW5nLm1faGZvbnQpOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAvLyBGb250cyB3
aXRoIGRpZmZlcmVudCBhc2NlbnRzIGNhbiBiZSB1c2VkIHRvIHJlbmRlciBkaWZmZXJlbnQKICAg
ICAgICAgICAgIC8vIHJ1bnMuICAnQWNyb3NzLXJ1bnMnIHktY29vcmRpbmF0ZSBjb3JyZWN0aW9u
IG5lZWRzIHRvIGJlCiAgICAgICAgICAgICAvLyBhZGp1c3RlZCBmb3IgZWFjaCBmb250LgogICAg
ICAgICAgICAgYm9vbCB0ZXh0T3V0T2sgPSBmYWxzZTsKICAgICAgICAgICAgIGZvciAoaW50IGV4
ZWN1dGlvbnMgPSAwOyBleGVjdXRpb25zIDwgMjsgKytleGVjdXRpb25zKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHVzZVdpbmRvd3NEcmF3aW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIEhSRVNV
TFQgaHIgPSBTY3JpcHRUZXh0T3V0KGRjLCBzaGFwaW5nLm1fc2NyaXB0Q2FjaGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clggKyBpbm5lck9mZnNl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSAtIHNo
YXBpbmcubV9hc2NlbnRPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsICZpdGVtLmEsIDAsIDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fZ2x5cGhzW2Zyb21HbHlwaF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseXBoQ291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5n
Lm1fYWR2YW5jZVtmcm9tR2x5cGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBqdXN0aWZ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc2hhcGluZy5tX29mZnNldHNbZnJvbUdseXBoXSk7Ci0gICAgICAgICAg
ICAgICAgICAgIHRleHRPdXRPayA9IChociA9PSBTX09LKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBTa1BvaW50IG9yaWdpbjsKLSAgICAgICAgICAgICAg
ICAgICAgb3JpZ2luLmZYID0gY3VyWCArICsgaW5uZXJPZmZzZXQ7Ci0gICAgICAgICAgICAgICAg
ICAgIG9yaWdpbi5mWSA9IHkgKyBtX2FzY2VudDsKLSAgICAgICAgICAgICAgICAgICAgcGFpbnRT
a2lhVGV4dChncmFwaGljc0NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhcGluZy5tX2hmb250LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
eXBoQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYXBpbmcubV9n
bHlwaHNbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hh
cGluZy5tX2FkdmFuY2VbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmc2hhcGluZy5tX29mZnNldHNbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmb3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dE91dE9rID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU2tQb2ludCBvcmlnaW47
CisgICAgICAgICAgICAgICAgb3JpZ2luLmZYID0gY3VyWCArICsgaW5uZXJPZmZzZXQ7CisgICAg
ICAgICAgICAgICAgb3JpZ2luLmZZID0geSArIG1fYXNjZW50OworICAgICAgICAgICAgICAgIHBh
aW50U2tpYVRleHQoZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhcGluZy5tX2hmb250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2x5cGhD
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fZ2x5cGhzW2Zy
b21HbHlwaF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX2FkdmFu
Y2VbZnJvbUdseXBoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1f
b2Zmc2V0c1tmcm9tR2x5cGhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9yaWdp
bik7CisgICAgICAgICAgICAgICAgdGV4dE91dE9rID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAg
IGlmICghdGV4dE91dE9rICYmIDAgPT0gZXhlY3V0aW9ucykgewogICAgICAgICAgICAgICAgICAg
ICAvLyBJZiBUZXh0T3V0IGlzIGNhbGxlZCBmcm9tIHRoZSByZW5kZXJlciBpdCBtaWdodCBmYWls
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29u
dGV4dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDkzNzA2KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTczLDE3ICs1NzMsNiBAQCBjb25zdCBTa0JpdG1hcCogUGxh
dGZvcm1Db250ZXh0U2tpYTo6Yml0CiAgICAgcmV0dXJuICZtX2NhbnZhcy0+Z2V0RGV2aWNlKCkt
PmFjY2Vzc0JpdG1hcChmYWxzZSk7CiB9CiAKLWJvb2wgUGxhdGZvcm1Db250ZXh0U2tpYTo6aXNO
YXRpdmVGb250UmVuZGVyaW5nQWxsb3dlZCgpCi17Ci0jaWYgRU5BQkxFKFNLSUFfVEVYVCkKLSAg
ICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChpc0FjY2VsZXJhdGVkKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gc2tpYTo6U3VwcG9ydHNQbGF0Zm9ybVBhaW50KG1f
Y2FudmFzKTsKLSNlbmRpZgotfQotCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmdldEltYWdl
UmVzYW1wbGluZ0hpbnQoSW50U2l6ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25z
dAogewogICAgICpzcmNTaXplID0gbV9pbWFnZVJlc2FtcGxpbmdIaW50U3JjU2l6ZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tp
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
UGxhdGZvcm1Db250ZXh0U2tpYS5oCShyZXZpc2lvbiA5MzcwNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjgsMTEgKzE2OCw2IEBAIHB1YmxpYzoKICAgICBib29sIHByaW50aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9wcmludGluZzsgfQogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwKSB7
IG1fcHJpbnRpbmcgPSBwOyB9CiAKLSAgICAvLyBSZXR1cm5zIGlmIHRoZSBjb250ZXh0IGFsbG93
cyByZW5kZXJpbmcgb2YgZm9udHMgdXNpbmcgbmF0aXZlIHBsYXRmb3JtCi0gICAgLy8gQVBJcy4g
SWYgZmFsc2UgaXMgcmV0dXJuZWQgZm9udCByZW5kZXJpbmcgaXMgcGVyZm9ybWVkIHVzaW5nIHRo
ZSBza2lhCi0gICAgLy8gdGV4dCBkcmF3aW5nIEFQSXMuCi0gICAgYm9vbCBpc05hdGl2ZUZvbnRS
ZW5kZXJpbmdBbGxvd2VkKCk7Ci0KICAgICB2b2lkIGdldEltYWdlUmVzYW1wbGluZ0hpbnQoSW50
U2l6ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25zdDsKICAgICB2b2lkIHNldElt
YWdlUmVzYW1wbGluZ0hpbnQoY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgRmxvYXRTaXpl
JiBkc3RTaXplKTsKICAgICB2b2lkIGNsZWFySW1hZ2VSZXNhbXBsaW5nSGludCgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9u
dFdpbi5jcHAJKHJldmlzaW9uIDkzNzA2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDU4ICs0Myw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1Rl
eHRTaGFkb3coR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0KQotewotICAgIEZsb2F0U2l6ZSBzaGFk
b3dPZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsK
LSAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0KLSAgICBib29sIGhhc1NoYWRvdyA9
IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9y
LCBzaGFkb3dDb2xvclNwYWNlKTsKLSAgICByZXR1cm4gIWhhc1NoYWRvdyB8fCAoIXNoYWRvd0Js
dXIgJiYgKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KSAmJiAoY29udGV4dC0+ZmlsbENvbG9y
KCkuYWxwaGEoKSA9PSAyNTUpKTsKLX0KLQotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdp
bmcoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIGlmICghd2luZG93c0NhbkhhbmRs
ZVRleHREcmF3aW5nV2l0aG91dFNoYWRvdyhjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgotICAgIGlmICghd2luZG93c0Nh
bkhhbmRsZURyYXdUZXh0U2hhZG93KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdX
aXRob3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKLXsKLSAgICAvLyBDaGVjayBm
b3Igbm9uLXRyYW5zbGF0aW9uIHRyYW5zZm9ybXMuIFNvbWV0aW1lcyB6b29tcyB3aWxsIGxvb2sg
YmV0dGVyIGluCi0gICAgLy8gU2tpYSwgYW5kIHNvbWV0aW1lcyBiZXR0ZXIgaW4gV2luZG93cy4g
VGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHpvb21pbmcKLSAgICAvLyBpbiB1c2luZyBTa2lhIHdp
bGwgc2hvdyB5b3UgdGhlIGhpbnRlZCBvdXRsaW5lcyBmb3IgdGhlIHNtYWxsZXIgc2l6ZSwKLSAg
ICAvLyB3aGljaCBsb29rIHdlaXJkLiBBbGwgZWxzZSBiZWluZyBlcXVhbCwgaXQncyBiZXR0ZXIg
dG8gdXNlIFdpbmRvd3MnIHRleHQKLSAgICAvLyBkcmF3aW5nLCBzbyB3ZSBkb24ndCBjaGVjayBm
b3Igem9vbXMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXggPSBjb250ZXh0LT5n
ZXRDVE0oKTsKLSAgICBpZiAobWF0cml4LmIoKSAhPSAwIHx8IG1hdHJpeC5jKCkgIT0gMCkgIC8v
IENoZWNrIGZvciBza2V3LgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBm
b3Igc3Ryb2tlIGVmZmVjdHMuCi0gICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5n
ZXRUZXh0RHJhd2luZ01vZGUoKSAhPSBUZXh0TW9kZUZpbGwpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIENoZWNrIGZvciBncmFkaWVudHMuCi0gICAgaWYgKGNvbnRleHQtPmZpbGxH
cmFkaWVudCgpIHx8IGNvbnRleHQtPnN0cm9rZUdyYWRpZW50KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIC8vIENoZWNrIGZvciBwYXR0ZXJucy4KLSAgICBpZiAoY29udGV4dC0+Zmls
bFBhdHRlcm4oKSB8fCBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmICghY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmlzTmF0aXZlRm9u
dFJlbmRlcmluZ0FsbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHNraWFEcmF3VGV4dChTa0NhbnZhcyogY2FudmFzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNrUG9pbnQmIHBvaW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIFNrUGFpbnQqIHBhaW50LApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAkocmV2aXNpb24gOTM3
MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2lu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDMzICszOSw2IEBAIGNsYXNzIFNrUG9pbnQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFBsYXRmb3Jt
Q29udGV4dFNraWE7Ci0KLS8vIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIHVzZWQgZm9yIG1vcmUg
Y29tcGxleCBmb250IGRyYXdpbmcgKGVmZmVjdHMgc3VjaCBhcwotLy8gc3Ryb2tpbmcgYW5kIG1v
cmUgY29tcGxleCB0cmFuc2Zvcm1zKSB0aGFuIFdpbmRvd3Mgc3VwcG9ydHMgZGlyZWN0bHkuICBT
aW5jZSAKLS8vIFdpbmRvd3MgZHJhd2luZyBpcyBmYXN0ZXIgeW91IHNob3VsZCB1c2Ugd2luZG93
c0NhbkhhbmRsZVRleHREcmF3aW5nIGZpcnN0IHRvIAotLy8gY2hlY2sgaWYgdXNpbmcgU2tpYSBp
cyByZXF1aXJlZCBhdCBhbGwuCi0vLyBOb3RlIHRoYXQgdGhlIHRleHQgd2lsbCBsb29rIGRpZmZl
cmVudCAobm8gQ2xlYXJUeXBlKSBzbyB0aGlzIHNob3VsZCBvbmx5IGJlCi0vLyB1c2VkIHdoZW4g
bmVjZXNzYXJ5LgotLy8KLS8vIFdoZW4geW91IGNhbGwgYSBTa2lhKiB0ZXh0IGRyYXdpbmcgZnVu
Y3Rpb24sIHZhcmlvdXMgZ2x5cGggb3V0bGluZXMgd2lsbCBiZQotLy8gY2FjaGVkLiBBcyBhIHJl
c3VsdCwgeW91IHNob3VsZCBjYWxsIFNraWFXaW5PdXRsaW5lQ2FjaGU6OnJlbW92ZVBhdGhzRm9y
Rm9udAotLy8gd2hlbiB0aGUgZm9udCBpcyBkZXN0cm95ZWQgc28gdGhhdCB0aGUgY2FjaGUgZG9l
cyBub3Qgb3V0bGl2ZSB0aGUgZm9udCAoc2luY2UKLS8vIHRoZSBIRk9OVHMgYXJlIHJlY3ljbGVk
KS4KLS8vCi0vLyBSZW1lbWJlciB0aGF0IFNraWEncyB0ZXh0IGRyYXdpbmcgb3JpZ2luIGlzIHRo
ZSBiYXNlbGluZSwgbGlrZSBXZWJLaXQsIG5vdAotLy8gdGhlIHRvcCwgbGlrZSBXaW5kb3dzLgot
Ci0vLyBSZXR1cm5zIHRydWUgaWYgdGhlIGZpbGxDb2xvciBhbmQgc2hhZG93Q29sb3IgYXJlIG9w
YXF1ZSBhbmQgdGhlIHRleHQtc2hhZG93Ci0vLyBpcyBub3QgYmx1cnJlZC4KLWJvb2wgd2luZG93
c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KEdyYXBoaWNzQ29udGV4dCopOwotCi0vLyBSZXR1cm5z
IHRydWUgaWYgYWR2YW5jZWQgZm9udCByZW5kZXJpbmcgaXMgcmVjb21tZW5kZWQuCi1ib29sIHdp
bmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhHcmFwaGljc0NvbnRleHQqKTsKLQotLy8gUmV0dXJu
cyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVuZGVyaW5nIGlzIHJlY29tbWVuZGVkIGlmIHNoYWRv
d3MgYXJlCi0vLyBkaXNyZWdhcmRlZC4KLWJvb2wgd2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5n
V2l0aG91dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqKTsKIAogLy8gTm90ZSB0aGF0IHRoZSBvZmZz
ZXRzIHBhcmFtZXRlciBpcyBvcHRpb25hbC4gIElmIG5vdCBOVUxMIGl0IHJlcHJlc2VudHMgYQog
Ly8gcGVyIGdseXBoIG9mZnNldCAoc3VjaCBhcyByZXR1cm5lZCBieSBTY3JpcHRQbGFjZSBXaW5k
b3dzIEFQSSBmdW5jdGlvbikuCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5Mzc5MSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDExLTA4LTI1
ICBNaWtlIFJlZWQgIDxyZWVkQGdvb2dsZS5jb20+CisKKyAgICAgICAgW3NraWFdIG5ldmVyIGRy
YXcgd2l0aCBHREksIHNvIHRoYXQgYWxsIHRleHQgY2FuIGJlIGdwdS1hY2NlbGVyYXRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyMDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMS0wOC0yNSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1F0XSBSRUdSRVNTSU9OKDkzNzY5
KTogaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS10ZXN0cy5odG1sIGZhaWxzCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CShyZXZpc2lvbiA5MzcwNikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTg1MCw2ICsxODUwLDg0IEBAIEJV
R0NSNDI4NzUgU0tJUCBXT05URklYIDogc3B1dG5payA9IFRFWFQKIAogQlVHV0szODcwNSA6IGh0
dHAvdGVzdHMvc2VjdXJpdHkvc2FuZGJveC1pbmhlcml0LXRvLWluaXRpYWwtZG9jdW1lbnQtMi5o
dG1sID0gVEVYVAogCisvLyBTd2l0Y2hpbmcgd2luZG93cyBvdmVyIGZyb20gR0RJIHRvIFNraWEg
Zm9yIGFsbCB0ZXh0IHJlbmRlcmluZy4KKy8vIFdoZW4gdGhhdCBsYW5kcywgd2Ugd2lsbCByZWJh
c2VsaW5lIHRoZXNlIGltYWdlcy4KK0JVR1dLNjUyMDMgV0lOIDogZmFzdC9ib3JkZXJzL2JvcmRl
ci1hbnRpYWxpYXNpbmcuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvcmVmbGVj
dGlvbnMvcmVmbGVjdGlvbi1vdmVyZmxvdy1oaWRkZW4uaHRtbCA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IGZhc3QvcmVwYWludC9yZWZsZWN0aW9uLXJlZHJhdy5odG1sID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogZmFzdC90ZXh0L2F0c3VpLXNwYWNpbmctZmVhdHVyZXMuaHRtbCA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9jZy12cy1hdHN1aS5odG1sID0gSU1BR0UKK0JV
R1dLNjUyMDMgV0lOIDogZmFzdC90ZXh0L2NvbXBsZXgtdGV4dC1vcGFjaXR5Lmh0bWwgPSBJTUFH
RQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9jb21wbGV4LWNoYXJh
Y3Rlci1iYXNlZC1mYWxsYmFjay5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC90
ZXh0L2ludGVybmF0aW9uYWwvZGFuZGEtc3BhY2UuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3RoYWktYmFodC1zcGFjZS5odG1sID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1saW5lLWJyZWFr
cy5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogbWVkaWEvYXVkaW8tcmVwYWludC5odG1s
ID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogcGxhdGZvcm0vd2luL2Zhc3QvdGV4dC91bmlzY3Jp
YmUtbWlzc2luZy1nbHlwaC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1T
VkctMS4xLVNFL3RleHQtaW50cm8tMDUtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTM3LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS0zOS10LnN2ZyA9IElNQUdFCitCVUdX
SzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNDAtdC5zdmcgPSBJTUFH
RQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTQxLXQuc3Zn
ID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS00
Ni10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRl
LWVsZW0tNjAtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEv
YW5pbWF0ZS1lbGVtLTYxLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1T
VkctMS4xL2FuaW1hdGUtZWxlbS02Mi10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2
Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjMtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBX
SU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY0LXQuc3ZnID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02NS10LnN2ZyA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjYtdC5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY3
LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUt
ZWxlbS02OC10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9h
bmltYXRlLWVsZW0tNjktdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNW
Ry0xLjEvYW5pbWF0ZS1lbGVtLTcwLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS04MS10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tODItdC5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTgzLXQuc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL3BzZXJ2ZXJzLWdyYWQtMDctYi5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvc3RydWN0LWZyYWctMDIt
dC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvdGV4dC1hbGln
bi0wNC1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0
LWFsaWduLTA1LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4x
L3RleHQtYWxpZ24tMDYtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNW
Ry0xLjEvdGV4dC1wYXRoLTAxLWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1cz
Qy1TVkctMS4xL3RleHQtdGV4dC0wNS10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2
Zy9hcy1iYWNrZ3JvdW5kLWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLmh0bWwgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYXMtaW1hZ2UvYW5pbWF0ZWQtc3ZnLWFzLWltYWdl
Lmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvZmlsdGVycy9mZVRpbGUu
c3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL2ZpbHRlcnMvZmlsdGVyUmVn
aW9ucy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC9sb25nVGV4
dE9uUGF0aC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0
QW5jaG9yLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRG
ZWF0dXJlcy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4dC90ZXh0
TGF5b3V0LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3RleHRQ
Q0RBVEEuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4dFBy
b3BlcnRpZXMuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4
dFByb3BlcnRpZXMyLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0
L3RleHRTdHlsZXMuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2NhcnRvLm5ldC90
ZXh0Ym94LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jYXJ0by5uZXQvd2luZG93
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jc3MvdGV4dC1zaGFkb3ctbXVsdGlw
bGUueGh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL2pzLWxhdGUtY2xp
cFBhdGgtYW5kLW9iamVjdC1jcmVhdGlvbi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvY3VzdG9tL2pzLWxhdGUtY2xpcFBhdGgtY3JlYXRpb24uc3ZnID0gSU1BR0UKK0JVR1dLNjUy
MDMgV0lOIDogc3ZnL2N1c3RvbS9saW5raW5nLWEtMDMtYi12aWV3Qm94LnN2ZyA9IElNQUdFCitC
VUdXSzY1MjAzIFdJTiA6IHN2Zy9jdXN0b20vbGlua2luZy11cmktMDEtYi5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL3N2Zy1mb250cy1mYWxsYmFjay54aHRtbCA9IElN
QUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHVGV4dEVsZW1lbnQt
ZG9tLWxlbmd0aEFkanVzdC1hdHRyLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
ZHluYW1pYy11cGRhdGVzL1NWR1RleHRFbGVtZW50LXN2Z2RvbS1sZW5ndGhBZGp1c3QtcHJvcC5o
dG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2hpeGllL21peGVkLzAwOS54bWwgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC9mb3JlaWduT2JqZWN0LXRleHQtY2xpcHBp
bmctYnVnLnhtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3NjYWxpbmctZm9u
dC13aXRoLWdlb21ldHJpYy1wcmVjaXNpb24uaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IHN2Zy90ZXh0L3RleHQtYWxpZ24tMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvdGV4dC90ZXh0LWFsaWduLTA1LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L3RleHQvdGV4dC1hbGlnbi0wNi1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90
ZXh0L3RleHQtaW50cm8tMDUtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4
dC90ZXh0LXBhdGgtMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC90
ZXh0UGF0aEJvdW5kc0J1Zy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS9w
YWdlL3pvb20tY29vcmRzLXZpZXdhdHRyLTAxLWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGllLW1peGVkLTAwOC54bWwgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvem9vbS9wYWdlL3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IHN2Zy96b29tL3RleHQvem9vbS1jb29yZHMtdmlld2F0dHItMDEt
Yi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS90ZXh0L3pvb20taGl4aWUt
bWl4ZWQtMDA5LnhtbCA9IElNQUdFCisKIC8vIFdlYktpdCByb2xsIDU4NzkxOjU4ODA3CiBCVUdD
UjQzMzE5IExJTlVYIERFQlVHIDogZmFzdC9mb3Jtcy9zZWxlY3QtZW1wdHktb3B0aW9uLWhlaWdo
dC5odG1sID0gUEFTUyBUSU1FT1VUCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106424</attachid>
            <date>2011-09-06 08:49:12 -0700</date>
            <delta_ts>2011-09-06 09:35:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65203-20110906114910.patch</filename>
            <type>text/plain</type>
            <size>32175</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTcyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDktMDYgIE1pa2UgUmVl
ZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAgICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdE
SSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlRm9udFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5QXdh
cmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OlRyYW5zcGFyZW5j
eUF3YXJlR2x5cGhQYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJl
Rm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWlu
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNXaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2NyaWJl
SGVscGVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3Jt
Q29udGV4dFNraWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZv
cm1Db250ZXh0U2tpYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2tpYURyYXdUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmg6CisKIDIwMTEtMDktMDUgIFBhdmVs
IFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcmUtaW1wbGVtZW50IFJhd1NvdXJjZUNvZGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1
bVdpbi5jcHAJKHJldmlzaW9uIDk0NTY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
MTQgKzYyLDggQEAgYm9vbCBjYW52YXNIYXNNdWx0aXBsZUxheWVycyhjb25zdCBTa0NhbgogY2xh
c3MgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgVHJhbnNwYXJl
bmN5QXdhcmVGb250UGFpbnRlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50Jik7
Ci0gICAgflRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXIoKTsKIAogcHJvdGVjdGVkOgotICAg
IC8vIENhbGxlZCBieSBvdXIgc3ViY2xhc3MnIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgR0RJ
IGlmIG5lY2Vzc2FyeS4gVGhpcwotICAgIC8vIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gc28gaXQg
Y2FuIGJlIGNhbGxlZCBhZnRlciB0aGUgc3ViY2xhc3MgZmluaXNoZXMKLSAgICAvLyBjb25zdHJ1
Y3Rpb24gKGl0IGNhbGxzIHZpcnR1YWwgZnVuY3Rpb25zKS4KLSAgICB2b2lkIGluaXQoKTsKLQog
ICAgIHZpcnR1YWwgSW50UmVjdCBlc3RpbWF0ZVRleHRCb3VuZHMoKSA9IDA7CiAKICAgICAvLyBV
c2UgdGhlIGNvbnRleHQgZnJvbSB0aGUgdHJhbnNwYXJlbmN5IGhlbHBlciB3aGVuIGRyYXdpbmcg
d2l0aCBHREkuIEl0CkBAIC03OCwyMCArNzIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqIG1fcGxhdGZvcm1Db250ZXh0OwogCiAgICAgRmxvYXRQb2ludCBtX3Bv
aW50OwotCi0gICAgLy8gU2V0IHdoZW4gV2luZG93cyBjYW4gaGFuZGxlIHRoZSB0eXBlIG9mIGRy
YXdpbmcgd2UncmUgZG9pbmcuCi0gICAgYm9vbCBtX3VzZUdESTsKLQotICAgIC8vIFRoZXNlIG1l
bWJlcnMgYXJlIHZhbGlkIG9ubHkgd2hlbiBtX3VzZUdESSBpcyBzZXQuCi0gICAgSERDIG1faGRj
OwotICAgIFRyYW5zcGFyZW5jeVdpbiBtX3RyYW5zcGFyZW5jeTsKLQotcHJpdmF0ZToKLSAgICAv
LyBDYWxsIHdoZW4gd2UncmUgdXNpbmcgR0RJIG1vZGUgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNw
YXJlbmN5V2luIHRvIGhlbHAKLSAgICAvLyB1cyBkcmF3IEdESSB0ZXh0LgotICAgIHZvaWQgaW5p
dGlhbGl6ZUZvckdESSgpOwotCi0gICAgYm9vbCBtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXllcjsg
IC8vIFdlIGNyZWF0ZWQgYSBsYXllciB0byBnaXZlIHRoZSBmb250IHNvbWUgYWxwaGEuCiB9Owog
CiBUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWlu
dGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKQEAgLTk5LDkwICs3OSw5IEBAIFRyYW5zcGFy
ZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW4KICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSkKICAgICAsIG1fcG9pbnQocG9pbnQpCi0gICAgLCBtX3VzZUdESSh3aW5kb3dzQ2FuSGFu
ZGxlVGV4dERyYXdpbmcoY29udGV4dCkpCi0gICAgLCBtX2hkYygwKQotICAgICwgbV9jcmVhdGVk
VHJhbnNwYXJlbmN5TGF5ZXIoZmFsc2UpCiB7CiB9CiAKLXZvaWQgVHJhbnNwYXJlbmN5QXdhcmVG
b250UGFpbnRlcjo6aW5pdCgpCi17Ci0gICAgaWYgKG1fdXNlR0RJKQotICAgICAgICBpbml0aWFs
aXplRm9yR0RJKCk7Ci19Ci0KLXZvaWQgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5p
dGlhbGl6ZUZvckdESSgpCi17Ci0gICAgbV9ncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICBT
a0NvbG9yIGNvbG9yID0gbV9wbGF0Zm9ybUNvbnRleHQtPmVmZmVjdGl2ZUZpbGxDb2xvcigpOwot
ICAgIC8vIFVzZWQgb25seSB3aGVuIG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyIGlzIHRydWUu
Ci0gICAgZmxvYXQgbGF5ZXJBbHBoYSA9IDAuMGY7Ci0gICAgaWYgKFNrQ29sb3JHZXRBKGNvbG9y
KSAhPSAweEZGKSB7Ci0gICAgICAgIC8vIFdoZW4gdGhlIGZvbnQgaGFzIHNvbWUgdHJhbnNwYXJl
bmN5LCBhcHBseSBpdCBieSBjcmVhdGluZyBhIG5ldwotICAgICAgICAvLyB0cmFuc3BhcmVuY3kg
bGF5ZXIgd2l0aCB0aGF0IG9wYWNpdHkgYXBwbGllZC4gV2UnbGwgYWN0dWFsbHkgY3JlYXRlCi0g
ICAgICAgIC8vIGEgbmV3IHRyYW5zcGFyZW5jeSBsYXllciBhZnRlciB3ZSBjYWxjdWxhdGUgdGhl
IGJvdW5kaW5nIGJveC4KLSAgICAgICAgbV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIgPSB0cnVl
OwotICAgICAgICBsYXllckFscGhhID0gU2tDb2xvckdldEEoY29sb3IpIC8gMjU1LjBmOwotICAg
ICAgICAvLyBUaGUgY29sb3Igc2hvdWxkIGJlIG9wYXF1ZSBub3cuCi0gICAgICAgIGNvbG9yID0g
U2tDb2xvclNldFJHQihTa0NvbG9yR2V0Uihjb2xvciksIFNrQ29sb3JHZXRHKGNvbG9yKSwgU2tD
b2xvckdldEIoY29sb3IpKTsKLSAgICB9Ci0KLSAgICBUcmFuc3BhcmVuY3lXaW46OkxheWVyTW9k
ZSBsYXllck1vZGU7Ci0gICAgSW50UmVjdCBsYXllclJlY3Q7Ci0gICAgaWYgKG1fcGxhdGZvcm1D
b250ZXh0LT5pc0RyYXdpbmdUb0ltYWdlQnVmZmVyKCkpIHsKLSAgICAgICAgLy8gQXNzdW1lIGlm
IHdlJ3JlIGRyYXdpbmcgdG8gYW4gaW1hZ2UgYnVmZmVyIHRoYXQgdGhlIGJhY2tncm91bmQKLSAg
ICAgICAgLy8gaXMgbm90IG9wYXF1ZSBhbmQgd2UgaGF2ZSB0byB1bmRvIENsZWFyVHlwZS4gV2Ug
bWF5IHdhbnQgdG8KLSAgICAgICAgLy8gZW5oYW5jZSB0aGlzIHRvIGFjdHVhbGx5IGNoZWNrLCBz
aW5jZSBpdCB3aWxsIG9mdGVuIGJlIG9wYXF1ZQotICAgICAgICAvLyBhbmQgd2UgY291bGQgZG8g
Q2xlYXJUeXBlIGluIHRoYXQgY2FzZS4KLSAgICAgICAgbGF5ZXJNb2RlID0gVHJhbnNwYXJlbmN5
V2luOjpUZXh0Q29tcG9zaXRlOwotICAgICAgICBsYXllclJlY3QgPSBlc3RpbWF0ZVRleHRCb3Vu
ZHMoKTsKLSAgICAgICAgbV9ncmFwaGljc0NvbnRleHQtPmNsaXAobGF5ZXJSZWN0KTsKLSAgICAg
ICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgbV9ncmFwaGlj
c0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIobGF5ZXJBbHBoYSk7Ci0KLSAgICAgICAg
Ly8gVGhlIHRyYW5zcGFyZW5jeSBoZWxwZXIgcmVxdWlyZXMgdGhhdCB3ZSBkcmF3IHRleHQgaW4g
YmxhY2sgaW4KLSAgICAgICAgLy8gdGhpcyBtb2RlIGFuZCBpdCB3aWxsIGFwcGx5IHRoZSBjb2xv
ci4KLSAgICAgICAgbV90cmFuc3BhcmVuY3kuc2V0VGV4dENvbXBvc2l0ZUNvbG9yKGNvbG9yKTsK
LSAgICAgICAgY29sb3IgPSBTa0NvbG9yU2V0UkdCKDAsIDAsIDApOwotICAgIH0gZWxzZSBpZiAo
bV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIgfHwgY2FudmFzSGFzTXVsdGlwbGVMYXllcnMobV9w
bGF0Zm9ybUNvbnRleHQtPmNhbnZhcygpKSkgewotICAgICAgICAvLyBXaGVuIHdlJ3JlIGRyYXdp
bmcgYSB3ZWIgcGFnZSwgd2Uga25vdyB0aGUgYmFja2dyb3VuZCBpcyBvcGFxdWUsCi0gICAgICAg
IC8vIGJ1dCBpZiB3ZSdyZSBkcmF3aW5nIHRvIGEgbGF5ZXIsIHdlIHN0aWxsIG5lZWQgZXh0cmEg
d29yay4KLSAgICAgICAgbGF5ZXJNb2RlID0gVHJhbnNwYXJlbmN5V2luOjpPcGFxdWVDb21wb3Np
dGVMYXllcjsKLSAgICAgICAgbGF5ZXJSZWN0ID0gZXN0aW1hdGVUZXh0Qm91bmRzKCk7Ci0gICAg
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5jbGlwKGxheWVyUmVjdCk7Ci0gICAgICAgIGlmIChtX2Ny
ZWF0ZWRUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5i
ZWdpblRyYW5zcGFyZW5jeUxheWVyKGxheWVyQWxwaGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIENvbW1vbiBjYXNlIG9mIGRyYXdpbmcgb250byB0aGUgYm90dG9tIGxheWVyIG9mIGEgd2Vi
IHBhZ2U6IHdlCi0gICAgICAgIC8vIGtub3cgZXZlcnl0aGluZyBpcyBvcGFxdWUgc28gZG9uJ3Qg
bmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgotICAgICAgICBsYXllck1vZGUgPSBUcmFuc3Bh
cmVuY3lXaW46Ok5vTGF5ZXI7Ci0gICAgfQotCi0gICAgLy8gQnVnIDI2MDg4IC0gaW5pdCgpIG1p
Z2h0IGZhaWwgaWYgbGF5ZXJSZWN0IGlzIGludmFsaWQuIEdpdmVuIHRoaXMsIHdlCi0gICAgLy8g
bmVlZCB0byBiZSBjYXJlZnVsIHRvIGNoZWNrIGZvciBudWxsIHBvaW50ZXJzIGV2ZXJ5d2hlcmUg
YWZ0ZXIgdGhpcyBjYWxsCi0gICAgbV90cmFuc3BhcmVuY3kuaW5pdChtX2dyYXBoaWNzQ29udGV4
dCwgbGF5ZXJNb2RlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW5jeVdpbjo6
S2VlcFRyYW5zZm9ybSwgbGF5ZXJSZWN0KTsKLQotICAgIC8vIFNldCB1cCB0aGUgREMsIHVzaW5n
IHRoZSBvbmUgZnJvbSB0aGUgdHJhbnNwYXJlbmN5IGhlbHBlci4KLSAgICBpZiAobV90cmFuc3Bh
cmVuY3kucGxhdGZvcm1Db250ZXh0KCkpIHsKLSAgICAgICAgbV9oZGMgPSBza2lhOjpCZWdpblBs
YXRmb3JtUGFpbnQobV90cmFuc3BhcmVuY3kucGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpKTsK
LSAgICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xv
cikpOwotICAgICAgICBTZXRCa01vZGUobV9oZGMsIFRSQU5TUEFSRU5UKTsKLSAgICB9Ci19Ci0K
LVRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6On5UcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWlu
dGVyKCkKLXsKLSAgICBpZiAoIW1fdXNlR0RJIHx8ICFtX2dyYXBoaWNzQ29udGV4dCB8fCAhbV9w
bGF0Zm9ybUNvbnRleHQpCi0gICAgICAgIHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZG8uCi0gICAg
bV90cmFuc3BhcmVuY3kuY29tcG9zaXRlKCk7Ci0gICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5j
eUxheWVyKQotICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKLSAgICBtX2dyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwotICAgIGlmIChtX3RyYW5zcGFy
ZW5jeS5wbGF0Zm9ybUNvbnRleHQoKSkKLSAgICAgICAgc2tpYTo6RW5kUGxhdGZvcm1QYWludCht
X3RyYW5zcGFyZW5jeS5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCkpOwotfQotCiAvLyBTcGVj
aWFsaXphdGlvbiBmb3Igc2ltcGxlIEdseXBoQnVmZmVyIHBhaW50aW5nLgogY2xhc3MgVHJhbnNw
YXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIgOiBwdWJsaWMgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFp
bnRlciB7CiAgcHVibGljOgpAQCAtMTkxLDEzICs5MCwxMCBAQCBjbGFzcyBUcmFuc3BhcmVuY3lB
d2FyZUdseXBoUGFpbnRlciA6IHB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR2x5cGhCdWZmZXImLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBmcm9tLCBpbnQgbnVtR2x5cGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIo
KTsKIAogICAgIC8vIERyYXdzIHRoZSBwYXJ0aWFsIHN0cmluZyBvZiBnbHlwaHMsIHN0YXJ0aW5n
IGF0IHxzdGFydEFkdmFuY2V8IHRvIHRoZQotICAgIC8vIGxlZnQgb2YgbV9wb2ludC4gV2UgZXhw
cmVzcyBpdCB0aGlzIHdheSBzbyB0aGF0IGlmIHdlJ3JlIHVzaW5nIHRoZSBTa2lhCi0gICAgLy8g
ZHJhd2luZyBwYXRoIHdlIGNhbiB1c2UgZmxvYXRpbmctcG9pbnQgcG9zaXRpb25pbmcsIGV2ZW4g
dGhvdWdoIHdlIGhhdmUKLSAgICAvLyB0byB1c2UgaW50ZWdlciBwb3NpdGlvbmluZyBpbiB0aGUg
R0RJIHBhdGguCi0gICAgYm9vbCBkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQq
IGdseXBocywgY29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsK
KyAgICAvLyBsZWZ0IG9mIG1fcG9pbnQuCisgICAgdm9pZCBkcmF3R2x5cGhzKGludCBudW1HbHlw
aHMsIGNvbnN0IFdPUkQqIGdseXBocywgY29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRB
ZHZhbmNlKSBjb25zdDsKIAogIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IGVzdGltYXRl
VGV4dEJvdW5kcygpOwpAQCAtMjA2LDEwICsxMDIsNiBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2Fy
ZUdseXBoUGFpbnRlciA6IHB1CiAgICAgY29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhCdWZmZXI7
CiAgICAgaW50IG1fZnJvbTsKICAgICBpbnQgbV9udW1HbHlwaHM7Ci0KLSAgICAvLyBXaGVuIG1f
dXNlR2RpIGlzIHNldCwgdGhpcyBzdG9yZXMgdGhlIHByZXZpb3VzIEhGT05UIHNlbGVjdGVkIGlu
dG8gdGhlCi0gICAgLy8gbV9oZGMgc28gd2UgY2FuIHJlc3RvcmUgaXQuCi0gICAgSEdESU9CSiBt
X29sZEZvbnQ7ICAvLyBGb3IgcmVzdG9yaW5nIHRoZSBEQyB0byBpdHMgb3JpZ2luYWwgc3RhdGUu
CiB9OwogCiBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVH
bHlwaFBhaW50ZXIoCkBAIC0yMjMsMjEgKzExNSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQ
YWludGVyOjpUcmFuc3BhcmUKICAgICAsIG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZmZXIpCiAgICAg
LCBtX2Zyb20oZnJvbSkKICAgICAsIG1fbnVtR2x5cGhzKG51bUdseXBocykKLSAgICAsIG1fb2xk
Rm9udCgwKQotewotICAgIGluaXQoKTsKLQotICAgIGlmIChtX2hkYykKLSAgICAgICAgbV9vbGRG
b250ID0gOjpTZWxlY3RPYmplY3QobV9oZGMsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQo
KSk7Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjp+VHJhbnNwYXJlbmN5QXdh
cmVHbHlwaFBhaW50ZXIoKQogewotICAgIGlmIChtX3VzZUdESSAmJiBtX2hkYykKLSAgICAgICAg
OjpTZWxlY3RPYmplY3QobV9oZGMsIG1fb2xkRm9udCk7CiB9CiAKLQogLy8gRXN0aW1hdGVzIHRo
ZSBib3VuZGluZyBib3ggb2YgdGhlIGdpdmVuIHRleHQuIFRoaXMgaXMgY29waWVkIGZyb20KIC8v
IEZvbnRDR1dpbi5jcHAsIGl0IGlzIHBvc3NpYmxlLCBidXQgYSBsb3QgbW9yZSB3b3JrLCB0byBn
ZXQgdGhlIHByZWNpZGUKIC8vIGJvdW5kcy4KQEAgLTI1NCw0NyArMTM0LDE1IEBAIEludFJlY3Qg
VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmUKICAgICAgICAgICAgICAgICAgICBmb250
TWV0cmljcy5saW5lU3BhY2luZygpKTsgCiB9CiAKLWJvb2wgVHJhbnNwYXJlbmN5QXdhcmVHbHlw
aFBhaW50ZXI6OmRyYXdHbHlwaHMoaW50IG51bUdseXBocywKK3ZvaWQgVHJhbnNwYXJlbmN5QXdh
cmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMoaW50IG51bUdseXBocywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFk
dmFuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBzdGFydEFkdmFuY2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VzZUdESSkgewotICAgICAg
ICBTa1BvaW50IG9yaWdpbiA9IG1fcG9pbnQ7Ci0gICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0
VG9TY2FsYXIoc3RhcnRBZHZhbmNlKTsKLSAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNz
Q29udGV4dCwgbV9mb250LT5wbGF0Zm9ybURhdGEoKS5oZm9udCgpLAotICAgICAgICAgICAgICAg
ICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmICghbV9ncmFwaGljc0NvbnRleHQgfHwgIW1f
aGRjKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdpbmRvd3MnIG9yaWdpbiBpcyB0
aGUgdG9wLWxlZnQgb2YgdGhlIGJvdW5kaW5nIGJveCwgc28gd2UgaGF2ZQotICAgIC8vIHRvIHN1
YnRyYWN0IG9mZiB0aGUgZm9udCBhc2NlbnQgdG8gZ2V0IGl0LgotICAgIGludCB4ID0gbHJvdW5k
ZihtX3BvaW50LngoKSArIHN0YXJ0QWR2YW5jZSk7Ci0gICAgaW50IHkgPSBscm91bmRmKG1fcG9p
bnQueSgpIC0gbV9mb250LT5mb250TWV0cmljcygpLmFzY2VudCgpKTsKLQotICAgIC8vIElmIHRo
ZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFk
b3cgY29sb3IgCi0gICAgLy8gYXJlIG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAg
RmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAo
bV9ncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKSkgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBh
IHNoYWRvdyBhbmQgdGhpcyBjb2RlIGlzIHJlYWNoZWQsIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4
dFNoYWRvdygpCi0gICAgICAgIC8vIHdpbGwgaGF2ZSBhbHJlYWR5IHJldHVybmVkIHRydWUgZHVy
aW5nIHRoZSBjdG9yIGluaXRpYXRpemF0aW9uIG9mIG1fdXNlR0RJCi0gICAgICAgIEFTU0VSVChz
aGFkb3dDb2xvci5hbHBoYSgpID09IDI1NSk7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoaWNzQ29u
dGV4dC0+ZmlsbENvbG9yKCkuYWxwaGEoKSA9PSAyNTUpOwotICAgICAgICBBU1NFUlQoc2hhZG93
Qmx1ciA9PSAwKTsKLSAgICAgICAgQ09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRv
Q09MT1JSRUYoU2tDb2xvclNldEFSR0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29s
b3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVk
VGV4dENvbG9yID0gR2V0VGV4dENvbG9yKG1faGRjKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1f
aGRjLCB0ZXh0Q29sb3IpOwotICAgICAgICBFeHRUZXh0T3V0KG1faGRjLCB4ICsgc2hhZG93T2Zm
c2V0LndpZHRoKCksIHkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIEVUT19HTFlQSF9JTkRFWCwg
MCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBo
cywgJmFkdmFuY2VzWzBdKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCBzYXZlZFRleHRD
b2xvcik7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAhIUV4dFRleHRPdXQobV9oZGMsIHgsIHks
IEVUT19HTFlQSF9JTkRFWCwgMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmds
eXBoc1swXSksIG51bUdseXBocywgJmFkdmFuY2VzWzBdKTsKKyAgICBTa1BvaW50IG9yaWdpbiA9
IG1fcG9pbnQ7CisgICAgb3JpZ2luLmZYICs9IFNrRmxvYXRUb1NjYWxhcihzdGFydEFkdmFuY2Up
OworICAgIHBhaW50U2tpYVRleHQobV9ncmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1E
YXRhKCkuaGZvbnQoKSwKKyAgICAgICAgICAgICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZh
bmNlcywgMCwgJm9yaWdpbik7CiB9CiAKIGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJl
UGFpbnRlciA6IHB1YmxpYyBUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyIHsKQEAgLTMwNCwx
MCArMTUyLDYgQEAgY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRSdW4mLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSwgaW50IHRvLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAg
flRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcigpOwotCi0gICAgLy8gVW5pc2NpYmUg
d2lsbCBkcmF3IGRpcmVjdGx5IGludG8gb3VyIGJ1ZmZlciwgc28gd2UgbmVlZCB0byBleHBvc2Ug
b3VyIERDLgotICAgIEhEQyBoZGMoKSBjb25zdCB7IHJldHVybiBtX2hkYzsgfQogCiAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIEludFJlY3QgZXN0aW1hdGVUZXh0Qm91bmRzKCk7CkBAIC0zMzAsMTEg
KzE3NCw2IEBAIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnMKICAgICAs
IG1fZnJvbShmcm9tKQogICAgICwgbV90byh0bykKIHsKLSAgICBpbml0KCk7Ci19Ci0KLVRyYW5z
cGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6flRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJl
UGFpbnRlcigpCi17CiB9CiAKIEludFJlY3QgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWlu
dGVyOjplc3RpbWF0ZVRleHRCb3VuZHMoKQpAQCAtNDI1LDIwICsyNjQsNyBAQCBzdGF0aWMgdm9p
ZCBkcmF3R2x5cGhzV2luKEdyYXBoaWNzQ29udGV4CiAgICAgICAgICAgICAgICAgYWR2YW5jZXNb
aV0gPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQWN0dWFsbHkgZHJhdyB0aGUgZ2x5cGhz
ICh3aXRoIHJldHJ5IG9uIGZhaWx1cmUpLgotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
LSAgICAgICAgZm9yIChpbnQgZXhlY3V0aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4ZWN1
dGlvbnMpIHsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBwYWludGVyLmRyYXdHbHlwaHMoY3VyTGVu
LCAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54KCkg
LSBjdXJyZW50V2lkdGgpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzICYmIGV4ZWN1dGlvbnMg
PT0gMCkgewotICAgICAgICAgICAgICAgIC8vIEFzayB0aGUgYnJvd3NlciB0byBsb2FkIHRoZSBm
b250IGZvciB1cyBhbmQgcmV0cnkuCi0gICAgICAgICAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojpl
bnN1cmVGb250TG9hZGVkKGZvbnQtPnBsYXRmb3JtRGF0YSgpLmhmb250KCkpOwotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBkcmF3IHRoZSBnbHlwaHMgYWZ0ZXIgc2Vjb25kIGF0dGVtcHQiKTsKKyAgICAgICAg
cGFpbnRlci5kcmF3R2x5cGhzKGN1ckxlbiwgJmdseXBoc1swXSwgJmFkdmFuY2VzWzBdLCBob3Jp
em9udGFsT2Zmc2V0IC0gcG9pbnQueCgpIC0gY3VycmVudFdpZHRoKTsKICAgICB9CiB9CiAKQEAg
LTQ5MiwzNyArMzE4LDkgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZQogICAgIGlmICghYWxwaGEgJiYgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVHJh
bnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyIHBhaW50ZXIoZ3JhcGhpY3NDb250ZXh0LCB0
aGlzLCBydW4sIGZyb20sIHRvLCBwb2ludCk7Ci0KLSAgICBIREMgaGRjID0gcGFpbnRlci5oZGMo
KTsKLSAgICBpZiAod2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKGdyYXBoaWNzQ29udGV4dCkg
JiYgIWhkYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETyhtYXJ1ZWwpOiBodHRwOi8v
Yi83MDA0NjQgU2V0VGV4dENvbG9yIGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc3BhcmVuY3kuCi0gICAg
Ly8gRW5mb3JjZSBub24tdHJhbnNwYXJlbnQgY29sb3IuCi0gICAgY29sb3IgPSBTa0NvbG9yU2V0
UkdCKFNrQ29sb3JHZXRSKGNvbG9yKSwgU2tDb2xvckdldEcoY29sb3IpLCBTa0NvbG9yR2V0Qihj
b2xvcikpOwotICAgIGlmIChoZGMpIHsKLSAgICAgICAgU2V0VGV4dENvbG9yKGhkYywgc2tpYTo6
U2tDb2xvclRvQ09MT1JSRUYoY29sb3IpKTsKLSAgICAgICAgU2V0QmtNb2RlKGhkYywgVFJBTlNQ
QVJFTlQpOwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFu
ZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCi0gICAgLy8gYXJlIG9wYXF1
ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAg
ICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3Bh
Y2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSkg
JiYgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKLSAg
ICAgICAgQ09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoU2tDb2xv
clNldEFSR0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hh
ZG93Q29sb3IuYmx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVkVGV4dENvbG9yID0gR2V0
VGV4dENvbG9yKGhkYyk7Ci0gICAgICAgIFNldFRleHRDb2xvcihoZGMsIHRleHRDb2xvcik7Ci0g
ICAgICAgIHN0YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIHN0YXRpY19jYXN0PGludD4o
cG9pbnQueCgpKSArIHNoYWRvd09mZnNldC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludD4ocG9pbnQueSgpIC0gZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgKyBzaGFk
b3dPZmZzZXQuaGVpZ2h0KCksIGZyb20sIHRvKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKGhkYywg
c2F2ZWRUZXh0Q29sb3IpOyAKLSAgICB9Ci0KICAgICAvLyBVbmlzY3JpYmUgY291bnRzIHRoZSBj
b29yZGluYXRlcyBmcm9tIHRoZSB1cHBlciBsZWZ0LCB3aGlsZSBXZWJLaXQgdXNlcwogICAgIC8v
IHRoZSBiYXNlbGluZSwgc28gd2UgaGF2ZSB0byBzdWJ0cmFjdCBvZmYgdGhlIGFzY2VudC4KKyAg
ICBIREMgaGRjID0gMDsKICAgICBzdGF0ZS5kcmF3KGdyYXBoaWNzQ29udGV4dCwgaGRjLCBscm91
bmRmKHBvaW50LngoKSksIGxyb3VuZGYocG9pbnQueSgpIC0gZm9udE1ldHJpY3MoKS5hc2NlbnQo
KSksIGZyb20sIHRvKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwCShyZXZp
c2lvbiA5NDU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1VuaXNjcmliZUhlbHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNiBAQCB2
b2lkIFVuaXNjcmliZUhlbHBlcjo6ZHJhdyhHcmFwaGljc0NvbnRlCiAgICAgSEdESU9CSiBvbGRG
b250ID0gMDsKICAgICBpbnQgY3VyWCA9IHg7CiAgICAgYm9vbCBmaXJzdFJ1biA9IHRydWU7Ci0g
ICAgYm9vbCB1c2VXaW5kb3dzRHJhd2luZyA9IHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhn
cmFwaGljc0NvbnRleHQpOwogCiAgICAgZm9yIChzaXplX3Qgc2NyZWVuSW5kZXggPSAwOyBzY3Jl
ZW5JbmRleCA8IG1fcnVucy5zaXplKCk7IHNjcmVlbkluZGV4KyspIHsKICAgICAgICAgaW50IGl0
ZW1JbmRleCA9IG1fc2NyZWVuT3JkZXJbc2NyZWVuSW5kZXhdOwpAQCAtMzQ4LDQzICszNDcsMjUg
QEAgdm9pZCBVbmlzY3JpYmVIZWxwZXI6OmRyYXcoR3JhcGhpY3NDb250ZQogICAgICAgICAgICAg
Ly8gUGFzcyAwIGluIHdoZW4gdGhlcmUgaXMgbm8ganVzdGlmaWNhdGlvbi4KICAgICAgICAgICAg
IGNvbnN0IGludCoganVzdGlmeSA9IHNoYXBpbmcubV9qdXN0aWZ5LnNpemUoKSA9PSAwID8gMCA6
ICZzaGFwaW5nLm1fanVzdGlmeVtmcm9tR2x5cGhdOwogCi0gICAgICAgICAgICBpZiAodXNlV2lu
ZG93c0RyYXdpbmcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RSdW4pIHsKLSAgICAgICAg
ICAgICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9iamVjdChkYywgc2hhcGluZy5tX2hmb250KTsK
LSAgICAgICAgICAgICAgICAgICAgZmlyc3RSdW4gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgU2VsZWN0T2JqZWN0KGRjLCBzaGFwaW5nLm1faGZv
bnQpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzID0g
c2hhcGluZy5tX2p1c3RpZnkuc2l6ZSgpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnNoYXBpbmcubV9qdXN0aWZ5W2Zyb21HbHlwaF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJnNoYXBpbmcubV9hZHZhbmNlW2Zyb21HbHlwaF07CiAgICAg
ICAgICAgICAvLyBGb250cyB3aXRoIGRpZmZlcmVudCBhc2NlbnRzIGNhbiBiZSB1c2VkIHRvIHJl
bmRlciBkaWZmZXJlbnQKICAgICAgICAgICAgIC8vIHJ1bnMuICAnQWNyb3NzLXJ1bnMnIHktY29v
cmRpbmF0ZSBjb3JyZWN0aW9uIG5lZWRzIHRvIGJlCiAgICAgICAgICAgICAvLyBhZGp1c3RlZCBm
b3IgZWFjaCBmb250LgogICAgICAgICAgICAgYm9vbCB0ZXh0T3V0T2sgPSBmYWxzZTsKICAgICAg
ICAgICAgIGZvciAoaW50IGV4ZWN1dGlvbnMgPSAwOyBleGVjdXRpb25zIDwgMjsgKytleGVjdXRp
b25zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVzZVdpbmRvd3NEcmF3aW5nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBTY3JpcHRUZXh0T3V0KGRjLCBzaGFwaW5nLm1fc2Ny
aXB0Q2FjaGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1clggKyBpbm5lck9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeSAtIHNoYXBpbmcubV9hc2NlbnRPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsICZpdGVtLmEsIDAsIDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fZ2x5
cGhzW2Zyb21HbHlwaF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdseXBoQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX29mZnNldHNbZnJvbUds
eXBoXSk7Ci0gICAgICAgICAgICAgICAgICAgIHRleHRPdXRPayA9IChociA9PSBTX09LKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBTa1BvaW50IG9yaWdp
bjsKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2luLmZYID0gY3VyWCArICsgaW5uZXJPZmZzZXQ7
Ci0gICAgICAgICAgICAgICAgICAgIG9yaWdpbi5mWSA9IHkgKyBtX2FzY2VudDsKLSAgICAgICAg
ICAgICAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hhcGluZy5tX2hmb250LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdseXBoQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnNoYXBpbmcubV9nbHlwaHNbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc2hhcGluZy5tX2FkdmFuY2VbZnJvbUdseXBoXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX29mZnNldHNbZnJvbUdseXBoXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3JpZ2luKTsKLSAgICAgICAgICAgICAg
ICAgICAgdGV4dE91dE9rID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgU2tQb2ludCBvcmlnaW47CisgICAgICAgICAgICAgICAgb3JpZ2luLmZYID0gY3VyWCArICsg
aW5uZXJPZmZzZXQ7CisgICAgICAgICAgICAgICAgb3JpZ2luLmZZID0geSArIG1fYXNjZW50Owor
ICAgICAgICAgICAgICAgIHBhaW50U2tpYVRleHQoZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hhcGluZy5tX2hmb250LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2x5cGhDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
aGFwaW5nLm1fZ2x5cGhzW2Zyb21HbHlwaF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZHZhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zm
c2V0c1tmcm9tR2x5cGhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9yaWdpbik7
CisgICAgICAgICAgICAgICAgdGV4dE91dE9rID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgIGlm
ICghdGV4dE91dE9rICYmIDAgPT0gZXhlY3V0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAv
LyBJZiBUZXh0T3V0IGlzIGNhbGxlZCBmcm9tIHRoZSByZW5kZXJlciBpdCBtaWdodCBmYWlsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDk0NTY5KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTc3LDE3ICs1NzcsNiBAQCBjb25zdCBTa0JpdG1hcCogUGxhdGZv
cm1Db250ZXh0U2tpYTo6Yml0CiAgICAgcmV0dXJuICZtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmFj
Y2Vzc0JpdG1hcChmYWxzZSk7CiB9CiAKLWJvb2wgUGxhdGZvcm1Db250ZXh0U2tpYTo6aXNOYXRp
dmVGb250UmVuZGVyaW5nQWxsb3dlZCgpCi17Ci0jaWYgRU5BQkxFKFNLSUFfVEVYVCkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChpc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gc2tpYTo6U3VwcG9ydHNQbGF0Zm9ybVBhaW50KG1fY2Fu
dmFzKTsKLSNlbmRpZgotfQotCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmdldEltYWdlUmVz
YW1wbGluZ0hpbnQoSW50U2l6ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25zdAog
ewogICAgICpzcmNTaXplID0gbV9pbWFnZVJlc2FtcGxpbmdIaW50U3JjU2l6ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxh
dGZvcm1Db250ZXh0U2tpYS5oCShyZXZpc2lvbiA5NDU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjcsMTEgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIHByaW50aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmludGluZzsgfQogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwKSB7IG1f
cHJpbnRpbmcgPSBwOyB9CiAKLSAgICAvLyBSZXR1cm5zIGlmIHRoZSBjb250ZXh0IGFsbG93cyBy
ZW5kZXJpbmcgb2YgZm9udHMgdXNpbmcgbmF0aXZlIHBsYXRmb3JtCi0gICAgLy8gQVBJcy4gSWYg
ZmFsc2UgaXMgcmV0dXJuZWQgZm9udCByZW5kZXJpbmcgaXMgcGVyZm9ybWVkIHVzaW5nIHRoZSBz
a2lhCi0gICAgLy8gdGV4dCBkcmF3aW5nIEFQSXMuCi0gICAgYm9vbCBpc05hdGl2ZUZvbnRSZW5k
ZXJpbmdBbGxvd2VkKCk7Ci0KICAgICB2b2lkIGdldEltYWdlUmVzYW1wbGluZ0hpbnQoSW50U2l6
ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25zdDsKICAgICB2b2lkIHNldEltYWdl
UmVzYW1wbGluZ0hpbnQoY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBk
c3RTaXplKTsKICAgICB2b2lkIGNsZWFySW1hZ2VSZXNhbXBsaW5nSGludCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdp
bi5jcHAJKHJldmlzaW9uIDk0NTY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDU4ICs0Myw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRT
aGFkb3coR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0KQotewotICAgIEZsb2F0U2l6ZSBzaGFkb3dP
ZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAg
ICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0KLSAgICBib29sIGhhc1NoYWRvdyA9IGNv
bnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKLSAgICByZXR1cm4gIWhhc1NoYWRvdyB8fCAoIXNoYWRvd0JsdXIg
JiYgKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KSAmJiAoY29udGV4dC0+ZmlsbENvbG9yKCku
YWxwaGEoKSA9PSAyNTUpKTsKLX0KLQotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIGlmICghd2luZG93c0NhbkhhbmRsZVRl
eHREcmF3aW5nV2l0aG91dFNoYWRvdyhjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgotICAgIGlmICghd2luZG93c0Nhbkhh
bmRsZURyYXdUZXh0U2hhZG93KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRo
b3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKLXsKLSAgICAvLyBDaGVjayBmb3Ig
bm9uLXRyYW5zbGF0aW9uIHRyYW5zZm9ybXMuIFNvbWV0aW1lcyB6b29tcyB3aWxsIGxvb2sgYmV0
dGVyIGluCi0gICAgLy8gU2tpYSwgYW5kIHNvbWV0aW1lcyBiZXR0ZXIgaW4gV2luZG93cy4gVGhl
IG1haW4gcHJvYmxlbSBpcyB0aGF0IHpvb21pbmcKLSAgICAvLyBpbiB1c2luZyBTa2lhIHdpbGwg
c2hvdyB5b3UgdGhlIGhpbnRlZCBvdXRsaW5lcyBmb3IgdGhlIHNtYWxsZXIgc2l6ZSwKLSAgICAv
LyB3aGljaCBsb29rIHdlaXJkLiBBbGwgZWxzZSBiZWluZyBlcXVhbCwgaXQncyBiZXR0ZXIgdG8g
dXNlIFdpbmRvd3MnIHRleHQKLSAgICAvLyBkcmF3aW5nLCBzbyB3ZSBkb24ndCBjaGVjayBmb3Ig
em9vbXMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXggPSBjb250ZXh0LT5nZXRD
VE0oKTsKLSAgICBpZiAobWF0cml4LmIoKSAhPSAwIHx8IG1hdHJpeC5jKCkgIT0gMCkgIC8vIENo
ZWNrIGZvciBza2V3LgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3Ig
c3Ryb2tlIGVmZmVjdHMuCi0gICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRU
ZXh0RHJhd2luZ01vZGUoKSAhPSBUZXh0TW9kZUZpbGwpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIC8vIENoZWNrIGZvciBncmFkaWVudHMuCi0gICAgaWYgKGNvbnRleHQtPmZpbGxHcmFk
aWVudCgpIHx8IGNvbnRleHQtPnN0cm9rZUdyYWRpZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIENoZWNrIGZvciBwYXR0ZXJucy4KLSAgICBpZiAoY29udGV4dC0+ZmlsbFBh
dHRlcm4oKSB8fCBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmlzTmF0aXZlRm9udFJl
bmRlcmluZ0FsbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHNraWFEcmF3VGV4dChTa0NhbnZhcyogY2FudmFzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNrUG9pbnQmIHBvaW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIFNrUGFpbnQqIHBhaW50LApAQCAtMTAzLDE5ICs1MSwzNCBAQCBzdGF0aWMg
dm9pZCBza2lhRHJhd1RleHQoU2tDYW52YXMqIGNhbnZhCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR09GRlNFVCogb2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bnVtR2x5cGhzKQogewotICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIDY0IGdseXBocyBvbiB0aGUg
c3RhY2suIElmIG51bUdseXBocyBpcyBsYXJnZXIsIHRoZSBhcnJheQotICAgIC8vIHdpbGwgZHlu
YW1pY2FsbHkgYWxsb2NhdGUgaXQgc3BhY2UgZm9yIG51bUdseXBoIGdseXBocy4KKyAgICAvLyBS
ZXNlcnZlIHNwYWNlIGZvciA2NCBTa1BvaW50cyBvbiB0aGUgc3RhY2suIElmIG51bUdseXBocyBp
cyBsYXJnZXIsIHRoZSBhcnJheQorICAgIC8vIHdpbGwgZHluYW1pY2FsbHkgYWxsb2NhdGUgaXQg
c3BhY2UgZm9yIG51bUdseXBoIGdseXBocy4gVGhpcyBpcyB1c2VkIHRvIHN0b3JlCisgICAgLy8g
dGhlIGNvbXB1dGVkIHgseSBsb2NhdGlvbnMuIEluIHRoZSBjYXNlIHdoZXJlIG9mZnNldHM9PW51
bGwsIHRoZW4gd2UgdXNlIGl0CisgICAgLy8gdG8gc3RvcmUgKHR3aWNlIGFzIG1hbnkpIFNrU2Nh
bGFycyBmb3IgeFtdCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0
OwotICAgIFNrQXV0b1NUQXJyYXk8a0xvY2FsR2x5cGhNYXgsIFNrUG9pbnQ+IHBvc1N0b3JhZ2Uo
bnVtR2x5cGhzKTsKLSAgICBTa1BvaW50KiBwb3MgPSBwb3NTdG9yYWdlLmdldCgpOworCiAgICAg
U2tTY2FsYXIgeCA9IHBvaW50LmZYOwogICAgIFNrU2NhbGFyIHkgPSBwb2ludC5mWTsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7Ci0gICAgICAgIHBvc1tpXS5zZXQo
eCArIChvZmZzZXRzID8gb2Zmc2V0c1tpXS5kdSA6IDApLAotICAgICAgICAgICAgICAgICAgIHkg
KyAob2Zmc2V0cyA/IG9mZnNldHNbaV0uZHYgOiAwKSk7Ci0gICAgICAgIHggKz0gU2tJbnRUb1Nj
YWxhcihhZHZhbmNlc1tpXSk7CisgICAgaWYgKG9mZnNldHMpIHsKKyAgICAgICAgU2tBdXRvU1RB
cnJheTxrTG9jYWxHbHlwaE1heCwgU2tQb2ludD4gc3RvcmFnZShudW1HbHlwaHMpOworICAgICAg
ICBTa1BvaW50KiBwb3MgPSBzdG9yYWdlLmdldCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAgICAgICAvLyBHREkgaGFzIGR2IGdvIHVwLCBz
byB3ZSBuZWdhdGUgaXQKKyAgICAgICAgICAgIHBvc1tpXS5zZXQoeCArIFNrSW50VG9TY2FsYXIo
b2Zmc2V0c1tpXS5kdSksCisgICAgICAgICAgICAgICAgICAgICAgIHkgKyAtU2tJbnRUb1NjYWxh
cihvZmZzZXRzW2ldLmR2KSk7CisgICAgICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5j
ZXNbaV0pOworICAgICAgICB9CisgICAgICAgIGNhbnZhcy0+ZHJhd1Bvc1RleHQoZ2x5cGhzLCBu
dW1HbHlwaHMgKiBzaXplb2YodWludDE2X3QpLCBwb3MsICpwYWludCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgU2tBdXRvU1RBcnJheTxrTG9jYWxHbHlwaE1heCAqIDIsIFNrU2NhbGFyPiBzdG9y
YWdlKG51bUdseXBocyk7CisgICAgICAgIFNrU2NhbGFyKiB4cG9zID0gc3RvcmFnZS5nZXQoKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1HbHlwaHM7IGkrKykgeworICAgICAgICAg
ICAgeHBvc1tpXSA9IHg7CisgICAgICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5jZXNb
aV0pOworICAgICAgICB9CisgICAgICAgIGNhbnZhcy0+ZHJhd1Bvc1RleHRIKGdseXBocywgbnVt
R2x5cGhzICogc2l6ZW9mKHVpbnQxNl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eHBvcywgeSwgKnBhaW50KTsKICAgICB9Ci0gICAgY2FudmFzLT5kcmF3UG9zVGV4dChnbHlwaHMs
IG51bUdseXBocyAqIHNpemVvZih1aW50MTZfdCksIHBvcywgKnBhaW50KTsKIH0KIAogc3RhdGlj
IGJvb2wgaXNDYW52YXNNdWx0aUxheWVyZWQoU2tDYW52YXMqIGNhbnZhcykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgJ
KHJldmlzaW9uIDk0NTY5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwzMyArMzksNiBAQCBjbGFzcyBT
a1BvaW50OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1j
bGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lhOwotCi0vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSB1
c2VkIGZvciBtb3JlIGNvbXBsZXggZm9udCBkcmF3aW5nIChlZmZlY3RzIHN1Y2ggYXMKLS8vIHN0
cm9raW5nIGFuZCBtb3JlIGNvbXBsZXggdHJhbnNmb3JtcykgdGhhbiBXaW5kb3dzIHN1cHBvcnRz
IGRpcmVjdGx5LiAgU2luY2UgCi0vLyBXaW5kb3dzIGRyYXdpbmcgaXMgZmFzdGVyIHlvdSBzaG91
bGQgdXNlIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyBmaXJzdCB0byAKLS8vIGNoZWNrIGlm
IHVzaW5nIFNraWEgaXMgcmVxdWlyZWQgYXQgYWxsLgotLy8gTm90ZSB0aGF0IHRoZSB0ZXh0IHdp
bGwgbG9vayBkaWZmZXJlbnQgKG5vIENsZWFyVHlwZSkgc28gdGhpcyBzaG91bGQgb25seSBiZQot
Ly8gdXNlZCB3aGVuIG5lY2Vzc2FyeS4KLS8vCi0vLyBXaGVuIHlvdSBjYWxsIGEgU2tpYSogdGV4
dCBkcmF3aW5nIGZ1bmN0aW9uLCB2YXJpb3VzIGdseXBoIG91dGxpbmVzIHdpbGwgYmUKLS8vIGNh
Y2hlZC4gQXMgYSByZXN1bHQsIHlvdSBzaG91bGQgY2FsbCBTa2lhV2luT3V0bGluZUNhY2hlOjpy
ZW1vdmVQYXRoc0ZvckZvbnQKLS8vIHdoZW4gdGhlIGZvbnQgaXMgZGVzdHJveWVkIHNvIHRoYXQg
dGhlIGNhY2hlIGRvZXMgbm90IG91dGxpdmUgdGhlIGZvbnQgKHNpbmNlCi0vLyB0aGUgSEZPTlRz
IGFyZSByZWN5Y2xlZCkuCi0vLwotLy8gUmVtZW1iZXIgdGhhdCBTa2lhJ3MgdGV4dCBkcmF3aW5n
IG9yaWdpbiBpcyB0aGUgYmFzZWxpbmUsIGxpa2UgV2ViS2l0LCBub3QKLS8vIHRoZSB0b3AsIGxp
a2UgV2luZG93cy4KLQotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBmaWxsQ29sb3IgYW5kIHNoYWRv
d0NvbG9yIGFyZSBvcGFxdWUgYW5kIHRoZSB0ZXh0LXNoYWRvdwotLy8gaXMgbm90IGJsdXJyZWQu
Ci1ib29sIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqKTsK
LQotLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVuZGVyaW5nIGlzIHJlY29tbWVu
ZGVkLgotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3JhcGhpY3NDb250ZXh0Kik7
Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJlbmRlcmluZyBpcyByZWNvbW1l
bmRlZCBpZiBzaGFkb3dzIGFyZQotLy8gZGlzcmVnYXJkZWQuCi1ib29sIHdpbmRvd3NDYW5IYW5k
bGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Kik7CiAKIC8vIE5vdGUg
dGhhdCB0aGUgb2Zmc2V0cyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuICBJZiBub3QgTlVMTCBpdCBy
ZXByZXNlbnRzIGEKIC8vIHBlciBnbHlwaCBvZmZzZXQgKHN1Y2ggYXMgcmV0dXJuZWQgYnkgU2Ny
aXB0UGxhY2UgV2luZG93cyBBUEkgZnVuY3Rpb24pLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1NzIp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBA
QAorMjAxMS0wOS0wNiAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgorCisgICAgICAgIFtz
a2lhXSBuZXZlciBkcmF3IHdpdGggR0RJLCBzbyB0aGF0IGFsbCB0ZXh0IGNhbiBiZSBncHUtYWNj
ZWxlcmF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1MjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDktMDYg
IENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFVu
cmV2aWV3ZWQgZ2FyZGVuaW5nIGFmdGVyIHI5NDMzMS4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDk0
NTY5KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xOTc5LDYgKzE5NzksODMgQEAgQlVHQ1I0OTAyOSA6IGZh
c3QvanMvb2JqZWN0LWxpdGVyYWwtc3ludAogCiBCVUdDUjQ4ODU5IFdJTiA6IGZhc3QvaW5saW5l
L2NvbnRpbnVhdGlvbi1vdXRsaW5lcy13aXRoLWxheWVycy0yLmh0bWwgPSBJTUFHRStURVhUCiAK
Ky8vIFRoZXNlIHNob3VsZCBiZSByZWJhc2VsaW5lZCBhZnRlciB0aGUgcGF0Y2ggbGFuZHMsIGFz
IHdlIGFyZSBub3cgZHJhd2luZworLy8gYWxsIHRleHQgd2l0aCBza2lhIChpbnN0ZWFkIG9mIGdk
aSkgYW5kIGluIHRoZXNlIGNhc2VzLCB3ZSBoYXZlIGRpZmZlcmVuY2VzCisvLyBpbiBhbnRpYWxp
YXNpbmcgKGRydCBzcGVjaWZpYykgb3IgaW4gZnJhY3Rpb25hbC1iYXNlbGluZXMgKGdkaSByb3Vu
ZHMgaW4gc3JjCisvLyBzcGFjZSwgc2tpYSByb3VuZHMgaW4gZGV2aWNlcyBzcGFjZSAKK0JVR1dL
NjUyMDMgV0lOIDogZmFzdC9ib3JkZXJzL2JvcmRlci1hbnRpYWxpYXNpbmcuaHRtbCA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvcmVmbGVjdGlvbnMvcmVmbGVjdGlvbi1vdmVyZmxvdy1o
aWRkZW4uaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvcmVwYWludC9yZWZsZWN0
aW9uLXJlZHJhdy5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC90ZXh0L2NvbXBs
ZXgtdGV4dC1vcGFjaXR5Lmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3RleHQv
aW50ZXJuYXRpb25hbC9jb21wbGV4LWNoYXJhY3Rlci1iYXNlZC1mYWxsYmFjay5odG1sID0gSU1B
R0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvZGFuZGEtc3BhY2Uu
aHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2hp
bmRpLXNwYWNpbmcuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2tobWVyLXNlbGVjdGlvbi5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1iYWh0LXNwYWNlLmh0bWwgPSBJTUFHRQorQlVH
V0s2NTIwMyBXSU4gOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC90aGFpLWxpbmUtYnJlYWtzLmh0
bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBtZWRpYS9hdWRpby1yZXBhaW50Lmh0bWwgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBwbGF0Zm9ybS93aW4vZmFzdC90ZXh0L3VuaXNjcmliZS1t
aXNzaW5nLWdseXBoLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLUkxOE4v
dHNwYW4tZGlyTFRSLXViT3ZlcnJpZGUtaW4tcnRsLWNvbnRleHQuc3ZnID0gSU1BR0UKK0JVR1dL
NjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS0zNy10LnN2ZyA9IElNQUdF
CitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tMzktdC5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTQw
LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUt
ZWxlbS00MS10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9h
bmltYXRlLWVsZW0tNDYtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNW
Ry0xLjEvYW5pbWF0ZS1lbGVtLTYwLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02MS10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjItdC5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTYzLXQuc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02NC10LnN2ZyA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjUt
dC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1l
bGVtLTY2LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2Fu
aW1hdGUtZWxlbS02Ny10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZH
LTEuMS9hbmltYXRlLWVsZW0tNjgtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
VzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY5LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS03MC10LnN2ZyA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tODEtdC5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTgyLXQuc3ZnID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS04My10
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9wc2VydmVycy1n
cmFkLTA3LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL3N0
cnVjdC1mcmFnLTAyLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkct
MS4xL3RleHQtYWxpZ24tMDQtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzND
LVNWRy0xLjEvdGV4dC1hbGlnbi0wNS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2
Zy9XM0MtU1ZHLTEuMS90ZXh0LWFsaWduLTA2LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL1czQy1TVkctMS4xL3RleHQtcGF0aC0wMS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LXRleHQtMDUtdC5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvYXMtYmFja2dyb3VuZC1pbWFnZS9hbmltYXRlZC1zdmctYXMtYmFja2dy
b3VuZC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2FzLWltYWdlL2FuaW1hdGVk
LXN2Zy1hcy1pbWFnZS5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL2Zp
bHRlcnMvZmlsdGVyUmVnaW9ucy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0
aWsvdGV4dC9sb25nVGV4dE9uUGF0aC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
YmF0aWsvdGV4dC90ZXh0QW5jaG9yLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9i
YXRpay90ZXh0L3RleHRGZWF0dXJlcy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
YmF0aWsvdGV4dC90ZXh0TGF5b3V0LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9i
YXRpay90ZXh0L3RleHRQQ0RBVEEuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2Jh
dGlrL3RleHQvdGV4dFByb3BlcnRpZXMuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L2JhdGlrL3RleHQvdGV4dFByb3BlcnRpZXMyLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IHN2Zy9iYXRpay90ZXh0L3ZlcnRpY2FsVGV4dC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4g
OiBzdmcvY2FydG8ubmV0L3RleHRib3guc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3Zn
L2NhcnRvLm5ldC93aW5kb3cuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2Nzcy90
ZXh0LXNoYWRvdy1tdWx0aXBsZS54aHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9j
dXN0b20vanMtbGF0ZS1jbGlwUGF0aC1hbmQtb2JqZWN0LWNyZWF0aW9uLnN2ZyA9IElNQUdFCitC
VUdXSzY1MjAzIFdJTiA6IHN2Zy9jdXN0b20vanMtbGF0ZS1jbGlwUGF0aC1jcmVhdGlvbi5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL2xpbmtpbmctYS0wMy1iLXZpZXdC
b3guc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2N1c3RvbS9saW5raW5nLXVyaS0w
MS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZH
VGV4dEVsZW1lbnQtZG9tLWxlbmd0aEFkanVzdC1hdHRyLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIw
MyBXSU4gOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR1RleHRFbGVtZW50LXN2Z2RvbS1sZW5ndGhB
ZGp1c3QtcHJvcC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2hpeGllL21peGVk
LzAwOS54bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC9mb3JlaWduT2JqZWN0
LXRleHQtY2xpcHBpbmctYnVnLnhtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy90ZXh0
L3NjYWxpbmctZm9udC13aXRoLWdlb21ldHJpYy1wcmVjaXNpb24uaHRtbCA9IElNQUdFCitCVUdX
SzY1MjAzIFdJTiA6IHN2Zy90ZXh0L3RleHQtYWxpZ24tMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvdGV4dC90ZXh0LWFsaWduLTA1LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUy
MDMgV0lOIDogc3ZnL3RleHQvdGV4dC1hbGlnbi0wNi1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAz
IFdJTiA6IHN2Zy90ZXh0L3RleHQtcGF0aC0wMS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy90ZXh0L3RleHRQYXRoQm91bmRzQnVnLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy96b29tL3BhZ2Uvem9vbS1jb29yZHMtdmlld2F0dHItMDEtYi5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS9wYWdlL3pvb20taGl4aWUtbWl4ZWQtMDA4LnhtbCA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy96b29tL3BhZ2Uvem9vbS1oaXhpZS1taXhlZC0w
MDkueG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3pvb20vdGV4dC96b29tLWNvb3Jk
cy12aWV3YXR0ci0wMS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy96b29tL3Rl
eHQvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UKKwogLy8gVGhlc2UgdGVzdHMgYWxs
IGZhaWwgYmVjYXVzZSB0aGUgZXhwZWN0ZWQgb3V0cHV0IGlzIHdyb25nLiBUaGUKIC8vIHJlYXNv
biBpcyB0aGF0IEpTQyBkb2VzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50IEZ1bmN0aW9uLnByb3Rv
dHlwZS5iaW5kCiAvLyBUaGVzZSB0ZXN0IGhhcyBpbnRlbnRpb25hbGx5IGJlZW4gbWFya2VkIGFz
IEZBSUwsIHdoaWNoIG1ha2VzIGl0IGVhc3kK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106429</attachid>
            <date>2011-09-06 09:36:04 -0700</date>
            <delta_ts>2011-09-06 12:21:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65203-20110906123601.patch</filename>
            <type>text/plain</type>
            <size>32167</size>
            <attacher name="Mike Reed">reed</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0NTc0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDktMDYgIE1pa2UgUmVl
ZCAgPHJlZWRAZ29vZ2xlLmNvbT4KKworICAgICAgICBbc2tpYV0gbmV2ZXIgZHJhdyB3aXRoIEdE
SSwgc28gdGhhdCBhbGwgdGV4dCBjYW4gYmUgZ3B1LWFjY2VsZXJhdGVkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTIwMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRm9udENocm9taXVtV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5j
eUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlRm9udFBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5QXdh
cmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OlRyYW5zcGFyZW5j
eUF3YXJlR2x5cGhQYWludGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJl
Rm9udFBhaW50ZXI6OlRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFy
ZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWlu
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdHbHlwaHNXaW4pOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5pc2NyaWJl
SGVscGVyOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3Jt
Q29udGV4dFNraWEuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZv
cm1Db250ZXh0U2tpYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2tpYURyYXdUZXh0KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmg6CisKIDIwMTEtMDktMDUgIFBhdmVs
IFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcmUtaW1wbGVtZW50IFJhd1NvdXJjZUNvZGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1
bVdpbi5jcHAJKHJldmlzaW9uIDk0NTc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udENocm9taXVtV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIs
MTQgKzYyLDggQEAgYm9vbCBjYW52YXNIYXNNdWx0aXBsZUxheWVycyhjb25zdCBTa0NhbgogY2xh
c3MgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlciB7CiBwdWJsaWM6CiAgICAgVHJhbnNwYXJl
bmN5QXdhcmVGb250UGFpbnRlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBGbG9hdFBvaW50Jik7
Ci0gICAgflRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXIoKTsKIAogcHJvdGVjdGVkOgotICAg
IC8vIENhbGxlZCBieSBvdXIgc3ViY2xhc3MnIGNvbnN0cnVjdG9yIHRvIGluaXRpYWxpemUgR0RJ
IGlmIG5lY2Vzc2FyeS4gVGhpcwotICAgIC8vIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gc28gaXQg
Y2FuIGJlIGNhbGxlZCBhZnRlciB0aGUgc3ViY2xhc3MgZmluaXNoZXMKLSAgICAvLyBjb25zdHJ1
Y3Rpb24gKGl0IGNhbGxzIHZpcnR1YWwgZnVuY3Rpb25zKS4KLSAgICB2b2lkIGluaXQoKTsKLQog
ICAgIHZpcnR1YWwgSW50UmVjdCBlc3RpbWF0ZVRleHRCb3VuZHMoKSA9IDA7CiAKICAgICAvLyBV
c2UgdGhlIGNvbnRleHQgZnJvbSB0aGUgdHJhbnNwYXJlbmN5IGhlbHBlciB3aGVuIGRyYXdpbmcg
d2l0aCBHREkuIEl0CkBAIC03OCwyMCArNzIsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqIG1fcGxhdGZvcm1Db250ZXh0OwogCiAgICAgRmxvYXRQb2ludCBtX3Bv
aW50OwotCi0gICAgLy8gU2V0IHdoZW4gV2luZG93cyBjYW4gaGFuZGxlIHRoZSB0eXBlIG9mIGRy
YXdpbmcgd2UncmUgZG9pbmcuCi0gICAgYm9vbCBtX3VzZUdESTsKLQotICAgIC8vIFRoZXNlIG1l
bWJlcnMgYXJlIHZhbGlkIG9ubHkgd2hlbiBtX3VzZUdESSBpcyBzZXQuCi0gICAgSERDIG1faGRj
OwotICAgIFRyYW5zcGFyZW5jeVdpbiBtX3RyYW5zcGFyZW5jeTsKLQotcHJpdmF0ZToKLSAgICAv
LyBDYWxsIHdoZW4gd2UncmUgdXNpbmcgR0RJIG1vZGUgdG8gaW5pdGlhbGl6ZSB0aGUgVHJhbnNw
YXJlbmN5V2luIHRvIGhlbHAKLSAgICAvLyB1cyBkcmF3IEdESSB0ZXh0LgotICAgIHZvaWQgaW5p
dGlhbGl6ZUZvckdESSgpOwotCi0gICAgYm9vbCBtX2NyZWF0ZWRUcmFuc3BhcmVuY3lMYXllcjsg
IC8vIFdlIGNyZWF0ZWQgYSBsYXllciB0byBnaXZlIHRoZSBmb250IHNvbWUgYWxwaGEuCiB9Owog
CiBUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWlu
dGVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwKQEAgLTk5LDkwICs3OSw5IEBAIFRyYW5zcGFy
ZW5jeUF3YXJlRm9udFBhaW50ZXI6OlRyYW5zcGFyZW4KICAgICA6IG1fZ3JhcGhpY3NDb250ZXh0
KGNvbnRleHQpCiAgICAgLCBtX3BsYXRmb3JtQ29udGV4dChjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSkKICAgICAsIG1fcG9pbnQocG9pbnQpCi0gICAgLCBtX3VzZUdESSh3aW5kb3dzQ2FuSGFu
ZGxlVGV4dERyYXdpbmcoY29udGV4dCkpCi0gICAgLCBtX2hkYygwKQotICAgICwgbV9jcmVhdGVk
VHJhbnNwYXJlbmN5TGF5ZXIoZmFsc2UpCiB7CiB9CiAKLXZvaWQgVHJhbnNwYXJlbmN5QXdhcmVG
b250UGFpbnRlcjo6aW5pdCgpCi17Ci0gICAgaWYgKG1fdXNlR0RJKQotICAgICAgICBpbml0aWFs
aXplRm9yR0RJKCk7Ci19Ci0KLXZvaWQgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6aW5p
dGlhbGl6ZUZvckdESSgpCi17Ci0gICAgbV9ncmFwaGljc0NvbnRleHQtPnNhdmUoKTsKLSAgICBT
a0NvbG9yIGNvbG9yID0gbV9wbGF0Zm9ybUNvbnRleHQtPmVmZmVjdGl2ZUZpbGxDb2xvcigpOwot
ICAgIC8vIFVzZWQgb25seSB3aGVuIG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyIGlzIHRydWUu
Ci0gICAgZmxvYXQgbGF5ZXJBbHBoYSA9IDAuMGY7Ci0gICAgaWYgKFNrQ29sb3JHZXRBKGNvbG9y
KSAhPSAweEZGKSB7Ci0gICAgICAgIC8vIFdoZW4gdGhlIGZvbnQgaGFzIHNvbWUgdHJhbnNwYXJl
bmN5LCBhcHBseSBpdCBieSBjcmVhdGluZyBhIG5ldwotICAgICAgICAvLyB0cmFuc3BhcmVuY3kg
bGF5ZXIgd2l0aCB0aGF0IG9wYWNpdHkgYXBwbGllZC4gV2UnbGwgYWN0dWFsbHkgY3JlYXRlCi0g
ICAgICAgIC8vIGEgbmV3IHRyYW5zcGFyZW5jeSBsYXllciBhZnRlciB3ZSBjYWxjdWxhdGUgdGhl
IGJvdW5kaW5nIGJveC4KLSAgICAgICAgbV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIgPSB0cnVl
OwotICAgICAgICBsYXllckFscGhhID0gU2tDb2xvckdldEEoY29sb3IpIC8gMjU1LjBmOwotICAg
ICAgICAvLyBUaGUgY29sb3Igc2hvdWxkIGJlIG9wYXF1ZSBub3cuCi0gICAgICAgIGNvbG9yID0g
U2tDb2xvclNldFJHQihTa0NvbG9yR2V0Uihjb2xvciksIFNrQ29sb3JHZXRHKGNvbG9yKSwgU2tD
b2xvckdldEIoY29sb3IpKTsKLSAgICB9Ci0KLSAgICBUcmFuc3BhcmVuY3lXaW46OkxheWVyTW9k
ZSBsYXllck1vZGU7Ci0gICAgSW50UmVjdCBsYXllclJlY3Q7Ci0gICAgaWYgKG1fcGxhdGZvcm1D
b250ZXh0LT5pc0RyYXdpbmdUb0ltYWdlQnVmZmVyKCkpIHsKLSAgICAgICAgLy8gQXNzdW1lIGlm
IHdlJ3JlIGRyYXdpbmcgdG8gYW4gaW1hZ2UgYnVmZmVyIHRoYXQgdGhlIGJhY2tncm91bmQKLSAg
ICAgICAgLy8gaXMgbm90IG9wYXF1ZSBhbmQgd2UgaGF2ZSB0byB1bmRvIENsZWFyVHlwZS4gV2Ug
bWF5IHdhbnQgdG8KLSAgICAgICAgLy8gZW5oYW5jZSB0aGlzIHRvIGFjdHVhbGx5IGNoZWNrLCBz
aW5jZSBpdCB3aWxsIG9mdGVuIGJlIG9wYXF1ZQotICAgICAgICAvLyBhbmQgd2UgY291bGQgZG8g
Q2xlYXJUeXBlIGluIHRoYXQgY2FzZS4KLSAgICAgICAgbGF5ZXJNb2RlID0gVHJhbnNwYXJlbmN5
V2luOjpUZXh0Q29tcG9zaXRlOwotICAgICAgICBsYXllclJlY3QgPSBlc3RpbWF0ZVRleHRCb3Vu
ZHMoKTsKLSAgICAgICAgbV9ncmFwaGljc0NvbnRleHQtPmNsaXAobGF5ZXJSZWN0KTsKLSAgICAg
ICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5jeUxheWVyKQotICAgICAgICAgICAgbV9ncmFwaGlj
c0NvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIobGF5ZXJBbHBoYSk7Ci0KLSAgICAgICAg
Ly8gVGhlIHRyYW5zcGFyZW5jeSBoZWxwZXIgcmVxdWlyZXMgdGhhdCB3ZSBkcmF3IHRleHQgaW4g
YmxhY2sgaW4KLSAgICAgICAgLy8gdGhpcyBtb2RlIGFuZCBpdCB3aWxsIGFwcGx5IHRoZSBjb2xv
ci4KLSAgICAgICAgbV90cmFuc3BhcmVuY3kuc2V0VGV4dENvbXBvc2l0ZUNvbG9yKGNvbG9yKTsK
LSAgICAgICAgY29sb3IgPSBTa0NvbG9yU2V0UkdCKDAsIDAsIDApOwotICAgIH0gZWxzZSBpZiAo
bV9jcmVhdGVkVHJhbnNwYXJlbmN5TGF5ZXIgfHwgY2FudmFzSGFzTXVsdGlwbGVMYXllcnMobV9w
bGF0Zm9ybUNvbnRleHQtPmNhbnZhcygpKSkgewotICAgICAgICAvLyBXaGVuIHdlJ3JlIGRyYXdp
bmcgYSB3ZWIgcGFnZSwgd2Uga25vdyB0aGUgYmFja2dyb3VuZCBpcyBvcGFxdWUsCi0gICAgICAg
IC8vIGJ1dCBpZiB3ZSdyZSBkcmF3aW5nIHRvIGEgbGF5ZXIsIHdlIHN0aWxsIG5lZWQgZXh0cmEg
d29yay4KLSAgICAgICAgbGF5ZXJNb2RlID0gVHJhbnNwYXJlbmN5V2luOjpPcGFxdWVDb21wb3Np
dGVMYXllcjsKLSAgICAgICAgbGF5ZXJSZWN0ID0gZXN0aW1hdGVUZXh0Qm91bmRzKCk7Ci0gICAg
ICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5jbGlwKGxheWVyUmVjdCk7Ci0gICAgICAgIGlmIChtX2Ny
ZWF0ZWRUcmFuc3BhcmVuY3lMYXllcikKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NDb250ZXh0LT5i
ZWdpblRyYW5zcGFyZW5jeUxheWVyKGxheWVyQWxwaGEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIENvbW1vbiBjYXNlIG9mIGRyYXdpbmcgb250byB0aGUgYm90dG9tIGxheWVyIG9mIGEgd2Vi
IHBhZ2U6IHdlCi0gICAgICAgIC8vIGtub3cgZXZlcnl0aGluZyBpcyBvcGFxdWUgc28gZG9uJ3Qg
bmVlZCB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgotICAgICAgICBsYXllck1vZGUgPSBUcmFuc3Bh
cmVuY3lXaW46Ok5vTGF5ZXI7Ci0gICAgfQotCi0gICAgLy8gQnVnIDI2MDg4IC0gaW5pdCgpIG1p
Z2h0IGZhaWwgaWYgbGF5ZXJSZWN0IGlzIGludmFsaWQuIEdpdmVuIHRoaXMsIHdlCi0gICAgLy8g
bmVlZCB0byBiZSBjYXJlZnVsIHRvIGNoZWNrIGZvciBudWxsIHBvaW50ZXJzIGV2ZXJ5d2hlcmUg
YWZ0ZXIgdGhpcyBjYWxsCi0gICAgbV90cmFuc3BhcmVuY3kuaW5pdChtX2dyYXBoaWNzQ29udGV4
dCwgbGF5ZXJNb2RlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW5jeVdpbjo6
S2VlcFRyYW5zZm9ybSwgbGF5ZXJSZWN0KTsKLQotICAgIC8vIFNldCB1cCB0aGUgREMsIHVzaW5n
IHRoZSBvbmUgZnJvbSB0aGUgdHJhbnNwYXJlbmN5IGhlbHBlci4KLSAgICBpZiAobV90cmFuc3Bh
cmVuY3kucGxhdGZvcm1Db250ZXh0KCkpIHsKLSAgICAgICAgbV9oZGMgPSBza2lhOjpCZWdpblBs
YXRmb3JtUGFpbnQobV90cmFuc3BhcmVuY3kucGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpKTsK
LSAgICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihjb2xv
cikpOwotICAgICAgICBTZXRCa01vZGUobV9oZGMsIFRSQU5TUEFSRU5UKTsKLSAgICB9Ci19Ci0K
LVRyYW5zcGFyZW5jeUF3YXJlRm9udFBhaW50ZXI6On5UcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWlu
dGVyKCkKLXsKLSAgICBpZiAoIW1fdXNlR0RJIHx8ICFtX2dyYXBoaWNzQ29udGV4dCB8fCAhbV9w
bGF0Zm9ybUNvbnRleHQpCi0gICAgICAgIHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZG8uCi0gICAg
bV90cmFuc3BhcmVuY3kuY29tcG9zaXRlKCk7Ci0gICAgaWYgKG1fY3JlYXRlZFRyYW5zcGFyZW5j
eUxheWVyKQotICAgICAgICBtX2dyYXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIo
KTsKLSAgICBtX2dyYXBoaWNzQ29udGV4dC0+cmVzdG9yZSgpOwotICAgIGlmIChtX3RyYW5zcGFy
ZW5jeS5wbGF0Zm9ybUNvbnRleHQoKSkKLSAgICAgICAgc2tpYTo6RW5kUGxhdGZvcm1QYWludCht
X3RyYW5zcGFyZW5jeS5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCkpOwotfQotCiAvLyBTcGVj
aWFsaXphdGlvbiBmb3Igc2ltcGxlIEdseXBoQnVmZmVyIHBhaW50aW5nLgogY2xhc3MgVHJhbnNw
YXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIgOiBwdWJsaWMgVHJhbnNwYXJlbmN5QXdhcmVGb250UGFp
bnRlciB7CiAgcHVibGljOgpAQCAtMTkxLDEzICs5MCwxMCBAQCBjbGFzcyBUcmFuc3BhcmVuY3lB
d2FyZUdseXBoUGFpbnRlciA6IHB1CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR2x5cGhCdWZmZXImLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBmcm9tLCBpbnQgbnVtR2x5cGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB+VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXIo
KTsKIAogICAgIC8vIERyYXdzIHRoZSBwYXJ0aWFsIHN0cmluZyBvZiBnbHlwaHMsIHN0YXJ0aW5n
IGF0IHxzdGFydEFkdmFuY2V8IHRvIHRoZQotICAgIC8vIGxlZnQgb2YgbV9wb2ludC4gV2UgZXhw
cmVzcyBpdCB0aGlzIHdheSBzbyB0aGF0IGlmIHdlJ3JlIHVzaW5nIHRoZSBTa2lhCi0gICAgLy8g
ZHJhd2luZyBwYXRoIHdlIGNhbiB1c2UgZmxvYXRpbmctcG9pbnQgcG9zaXRpb25pbmcsIGV2ZW4g
dGhvdWdoIHdlIGhhdmUKLSAgICAvLyB0byB1c2UgaW50ZWdlciBwb3NpdGlvbmluZyBpbiB0aGUg
R0RJIHBhdGguCi0gICAgYm9vbCBkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsIGNvbnN0IFdPUkQq
IGdseXBocywgY29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRBZHZhbmNlKSBjb25zdDsK
KyAgICAvLyBsZWZ0IG9mIG1fcG9pbnQuCisgICAgdm9pZCBkcmF3R2x5cGhzKGludCBudW1HbHlw
aHMsIGNvbnN0IFdPUkQqIGdseXBocywgY29uc3QgaW50KiBhZHZhbmNlcywgZmxvYXQgc3RhcnRB
ZHZhbmNlKSBjb25zdDsKIAogIHByaXZhdGU6CiAgICAgdmlydHVhbCBJbnRSZWN0IGVzdGltYXRl
VGV4dEJvdW5kcygpOwpAQCAtMjA2LDEwICsxMDIsNiBAQCBjbGFzcyBUcmFuc3BhcmVuY3lBd2Fy
ZUdseXBoUGFpbnRlciA6IHB1CiAgICAgY29uc3QgR2x5cGhCdWZmZXImIG1fZ2x5cGhCdWZmZXI7
CiAgICAgaW50IG1fZnJvbTsKICAgICBpbnQgbV9udW1HbHlwaHM7Ci0KLSAgICAvLyBXaGVuIG1f
dXNlR2RpIGlzIHNldCwgdGhpcyBzdG9yZXMgdGhlIHByZXZpb3VzIEhGT05UIHNlbGVjdGVkIGlu
dG8gdGhlCi0gICAgLy8gbV9oZGMgc28gd2UgY2FuIHJlc3RvcmUgaXQuCi0gICAgSEdESU9CSiBt
X29sZEZvbnQ7ICAvLyBGb3IgcmVzdG9yaW5nIHRoZSBEQyB0byBpdHMgb3JpZ2luYWwgc3RhdGUu
CiB9OwogCiBUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVH
bHlwaFBhaW50ZXIoCkBAIC0yMjMsMjEgKzExNSw5IEBAIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQ
YWludGVyOjpUcmFuc3BhcmUKICAgICAsIG1fZ2x5cGhCdWZmZXIoZ2x5cGhCdWZmZXIpCiAgICAg
LCBtX2Zyb20oZnJvbSkKICAgICAsIG1fbnVtR2x5cGhzKG51bUdseXBocykKLSAgICAsIG1fb2xk
Rm9udCgwKQotewotICAgIGluaXQoKTsKLQotICAgIGlmIChtX2hkYykKLSAgICAgICAgbV9vbGRG
b250ID0gOjpTZWxlY3RPYmplY3QobV9oZGMsIG1fZm9udC0+cGxhdGZvcm1EYXRhKCkuaGZvbnQo
KSk7Ci19Ci0KLVRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjp+VHJhbnNwYXJlbmN5QXdh
cmVHbHlwaFBhaW50ZXIoKQogewotICAgIGlmIChtX3VzZUdESSAmJiBtX2hkYykKLSAgICAgICAg
OjpTZWxlY3RPYmplY3QobV9oZGMsIG1fb2xkRm9udCk7CiB9CiAKLQogLy8gRXN0aW1hdGVzIHRo
ZSBib3VuZGluZyBib3ggb2YgdGhlIGdpdmVuIHRleHQuIFRoaXMgaXMgY29waWVkIGZyb20KIC8v
IEZvbnRDR1dpbi5jcHAsIGl0IGlzIHBvc3NpYmxlLCBidXQgYSBsb3QgbW9yZSB3b3JrLCB0byBn
ZXQgdGhlIHByZWNpZGUKIC8vIGJvdW5kcy4KQEAgLTI1NCw0NyArMTM0LDE1IEBAIEludFJlY3Qg
VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmUKICAgICAgICAgICAgICAgICAgICBmb250
TWV0cmljcy5saW5lU3BhY2luZygpKTsgCiB9CiAKLWJvb2wgVHJhbnNwYXJlbmN5QXdhcmVHbHlw
aFBhaW50ZXI6OmRyYXdHbHlwaHMoaW50IG51bUdseXBocywKK3ZvaWQgVHJhbnNwYXJlbmN5QXdh
cmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMoaW50IG51bUdseXBocywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV09SRCogZ2x5cGhzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQqIGFk
dmFuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBzdGFydEFkdmFuY2UpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3VzZUdESSkgewotICAgICAg
ICBTa1BvaW50IG9yaWdpbiA9IG1fcG9pbnQ7Ci0gICAgICAgIG9yaWdpbi5mWCArPSBTa0Zsb2F0
VG9TY2FsYXIoc3RhcnRBZHZhbmNlKTsKLSAgICAgICAgcGFpbnRTa2lhVGV4dChtX2dyYXBoaWNz
Q29udGV4dCwgbV9mb250LT5wbGF0Zm9ybURhdGEoKS5oZm9udCgpLAotICAgICAgICAgICAgICAg
ICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZhbmNlcywgMCwgJm9yaWdpbik7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmICghbV9ncmFwaGljc0NvbnRleHQgfHwgIW1f
aGRjKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdpbmRvd3MnIG9yaWdpbiBpcyB0
aGUgdG9wLWxlZnQgb2YgdGhlIGJvdW5kaW5nIGJveCwgc28gd2UgaGF2ZQotICAgIC8vIHRvIHN1
YnRyYWN0IG9mZiB0aGUgZm9udCBhc2NlbnQgdG8gZ2V0IGl0LgotICAgIGludCB4ID0gbHJvdW5k
ZihtX3BvaW50LngoKSArIHN0YXJ0QWR2YW5jZSk7Ci0gICAgaW50IHkgPSBscm91bmRmKG1fcG9p
bnQueSgpIC0gbV9mb250LT5mb250TWV0cmljcygpLmFzY2VudCgpKTsKLQotICAgIC8vIElmIHRo
ZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFuZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFk
b3cgY29sb3IgCi0gICAgLy8gYXJlIG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAg
RmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9y
IHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAo
bV9ncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yLCBzaGFkb3dDb2xvclNwYWNlKSkgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBh
IHNoYWRvdyBhbmQgdGhpcyBjb2RlIGlzIHJlYWNoZWQsIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4
dFNoYWRvdygpCi0gICAgICAgIC8vIHdpbGwgaGF2ZSBhbHJlYWR5IHJldHVybmVkIHRydWUgZHVy
aW5nIHRoZSBjdG9yIGluaXRpYXRpemF0aW9uIG9mIG1fdXNlR0RJCi0gICAgICAgIEFTU0VSVChz
aGFkb3dDb2xvci5hbHBoYSgpID09IDI1NSk7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoaWNzQ29u
dGV4dC0+ZmlsbENvbG9yKCkuYWxwaGEoKSA9PSAyNTUpOwotICAgICAgICBBU1NFUlQoc2hhZG93
Qmx1ciA9PSAwKTsKLSAgICAgICAgQ09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRv
Q09MT1JSRUYoU2tDb2xvclNldEFSR0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29s
b3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVk
VGV4dENvbG9yID0gR2V0VGV4dENvbG9yKG1faGRjKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1f
aGRjLCB0ZXh0Q29sb3IpOwotICAgICAgICBFeHRUZXh0T3V0KG1faGRjLCB4ICsgc2hhZG93T2Zm
c2V0LndpZHRoKCksIHkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCksIEVUT19HTFlQSF9JTkRFWCwg
MCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBo
cywgJmFkdmFuY2VzWzBdKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKG1faGRjLCBzYXZlZFRleHRD
b2xvcik7Ci0gICAgfQotICAgIAotICAgIHJldHVybiAhIUV4dFRleHRPdXQobV9oZGMsIHgsIHks
IEVUT19HTFlQSF9JTkRFWCwgMCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmds
eXBoc1swXSksIG51bUdseXBocywgJmFkdmFuY2VzWzBdKTsKKyAgICBTa1BvaW50IG9yaWdpbiA9
IG1fcG9pbnQ7CisgICAgb3JpZ2luLmZYICs9IFNrRmxvYXRUb1NjYWxhcihzdGFydEFkdmFuY2Up
OworICAgIHBhaW50U2tpYVRleHQobV9ncmFwaGljc0NvbnRleHQsIG1fZm9udC0+cGxhdGZvcm1E
YXRhKCkuaGZvbnQoKSwKKyAgICAgICAgICAgICAgICAgIG51bUdseXBocywgZ2x5cGhzLCBhZHZh
bmNlcywgMCwgJm9yaWdpbik7CiB9CiAKIGNsYXNzIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJl
UGFpbnRlciA6IHB1YmxpYyBUcmFuc3BhcmVuY3lBd2FyZUZvbnRQYWludGVyIHsKQEAgLTMwNCwx
MCArMTUyLDYgQEAgY2xhc3MgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHRSdW4mLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJvbSwgaW50IHRvLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50Jik7Ci0gICAg
flRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcigpOwotCi0gICAgLy8gVW5pc2NpYmUg
d2lsbCBkcmF3IGRpcmVjdGx5IGludG8gb3VyIGJ1ZmZlciwgc28gd2UgbmVlZCB0byBleHBvc2Ug
b3VyIERDLgotICAgIEhEQyBoZGMoKSBjb25zdCB7IHJldHVybiBtX2hkYzsgfQogCiAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIEludFJlY3QgZXN0aW1hdGVUZXh0Qm91bmRzKCk7CkBAIC0zMzAsMTEg
KzE3NCw2IEBAIFRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6VHJhbnMKICAgICAs
IG1fZnJvbShmcm9tKQogICAgICwgbV90byh0bykKIHsKLSAgICBpbml0KCk7Ci19Ci0KLVRyYW5z
cGFyZW5jeUF3YXJlVW5pc2NyaWJlUGFpbnRlcjo6flRyYW5zcGFyZW5jeUF3YXJlVW5pc2NyaWJl
UGFpbnRlcigpCi17CiB9CiAKIEludFJlY3QgVHJhbnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWlu
dGVyOjplc3RpbWF0ZVRleHRCb3VuZHMoKQpAQCAtNDI1LDIwICsyNjQsNyBAQCBzdGF0aWMgdm9p
ZCBkcmF3R2x5cGhzV2luKEdyYXBoaWNzQ29udGV4CiAgICAgICAgICAgICAgICAgYWR2YW5jZXNb
aV0gPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gQWN0dWFsbHkgZHJhdyB0aGUgZ2x5cGhz
ICh3aXRoIHJldHJ5IG9uIGZhaWx1cmUpLgotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
LSAgICAgICAgZm9yIChpbnQgZXhlY3V0aW9ucyA9IDA7IGV4ZWN1dGlvbnMgPCAyOyArK2V4ZWN1
dGlvbnMpIHsKLSAgICAgICAgICAgIHN1Y2Nlc3MgPSBwYWludGVyLmRyYXdHbHlwaHMoY3VyTGVu
LCAmZ2x5cGhzWzBdLCAmYWR2YW5jZXNbMF0sIGhvcml6b250YWxPZmZzZXQgLSBwb2ludC54KCkg
LSBjdXJyZW50V2lkdGgpOwotICAgICAgICAgICAgaWYgKCFzdWNjZXNzICYmIGV4ZWN1dGlvbnMg
PT0gMCkgewotICAgICAgICAgICAgICAgIC8vIEFzayB0aGUgYnJvd3NlciB0byBsb2FkIHRoZSBm
b250IGZvciB1cyBhbmQgcmV0cnkuCi0gICAgICAgICAgICAgICAgUGxhdGZvcm1TdXBwb3J0Ojpl
bnN1cmVGb250TG9hZGVkKGZvbnQtPnBsYXRmb3JtRGF0YSgpLmhmb250KCkpOwotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgICAgICBMT0dfRVJST1IoIlVu
YWJsZSB0byBkcmF3IHRoZSBnbHlwaHMgYWZ0ZXIgc2Vjb25kIGF0dGVtcHQiKTsKKyAgICAgICAg
cGFpbnRlci5kcmF3R2x5cGhzKGN1ckxlbiwgJmdseXBoc1swXSwgJmFkdmFuY2VzWzBdLCBob3Jp
em9udGFsT2Zmc2V0IC0gcG9pbnQueCgpIC0gY3VycmVudFdpZHRoKTsKICAgICB9CiB9CiAKQEAg
LTQ5MiwzNyArMzE4LDkgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250
ZQogICAgIGlmICghYWxwaGEgJiYgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
Z2V0U3Ryb2tlU3R5bGUoKSA9PSBOb1N0cm9rZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVHJh
bnNwYXJlbmN5QXdhcmVVbmlzY3JpYmVQYWludGVyIHBhaW50ZXIoZ3JhcGhpY3NDb250ZXh0LCB0
aGlzLCBydW4sIGZyb20sIHRvLCBwb2ludCk7Ci0KLSAgICBIREMgaGRjID0gcGFpbnRlci5oZGMo
KTsKLSAgICBpZiAod2luZG93c0NhbkhhbmRsZVRleHREcmF3aW5nKGdyYXBoaWNzQ29udGV4dCkg
JiYgIWhkYykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVE9ETyhtYXJ1ZWwpOiBodHRwOi8v
Yi83MDA0NjQgU2V0VGV4dENvbG9yIGRvZXNuJ3Qgc3VwcG9ydCB0cmFuc3BhcmVuY3kuCi0gICAg
Ly8gRW5mb3JjZSBub24tdHJhbnNwYXJlbnQgY29sb3IuCi0gICAgY29sb3IgPSBTa0NvbG9yU2V0
UkdCKFNrQ29sb3JHZXRSKGNvbG9yKSwgU2tDb2xvckdldEcoY29sb3IpLCBTa0NvbG9yR2V0Qihj
b2xvcikpOwotICAgIGlmIChoZGMpIHsKLSAgICAgICAgU2V0VGV4dENvbG9yKGhkYywgc2tpYTo6
U2tDb2xvclRvQ09MT1JSRUYoY29sb3IpKTsKLSAgICAgICAgU2V0QmtNb2RlKGhkYywgVFJBTlNQ
QVJFTlQpOwotICAgIH0KLQotICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFu
ZCBib3RoIHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCi0gICAgLy8gYXJlIG9wYXF1
ZSwgaGFuZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKLSAg
ICBmbG9hdCBzaGFkb3dCbHVyOwotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIENvbG9yU3Bh
Y2Ugc2hhZG93Q29sb3JTcGFjZTsKLSAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgc2hhZG93Q29sb3JTcGFjZSkg
JiYgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKLSAg
ICAgICAgQ09MT1JSRUYgdGV4dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoU2tDb2xv
clNldEFSR0IoMjU1LCBzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hh
ZG93Q29sb3IuYmx1ZSgpKSk7Ci0gICAgICAgIENPTE9SUkVGIHNhdmVkVGV4dENvbG9yID0gR2V0
VGV4dENvbG9yKGhkYyk7Ci0gICAgICAgIFNldFRleHRDb2xvcihoZGMsIHRleHRDb2xvcik7Ci0g
ICAgICAgIHN0YXRlLmRyYXcoZ3JhcGhpY3NDb250ZXh0LCBoZGMsIHN0YXRpY19jYXN0PGludD4o
cG9pbnQueCgpKSArIHNoYWRvd09mZnNldC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludD4ocG9pbnQueSgpIC0gZm9udE1ldHJpY3MoKS5hc2NlbnQoKSkgKyBzaGFk
b3dPZmZzZXQuaGVpZ2h0KCksIGZyb20sIHRvKTsKLSAgICAgICAgU2V0VGV4dENvbG9yKGhkYywg
c2F2ZWRUZXh0Q29sb3IpOyAKLSAgICB9Ci0KICAgICAvLyBVbmlzY3JpYmUgY291bnRzIHRoZSBj
b29yZGluYXRlcyBmcm9tIHRoZSB1cHBlciBsZWZ0LCB3aGlsZSBXZWJLaXQgdXNlcwogICAgIC8v
IHRoZSBiYXNlbGluZSwgc28gd2UgaGF2ZSB0byBzdWJ0cmFjdCBvZmYgdGhlIGFzY2VudC4KKyAg
ICBIREMgaGRjID0gMDsKICAgICBzdGF0ZS5kcmF3KGdyYXBoaWNzQ29udGV4dCwgaGRjLCBscm91
bmRmKHBvaW50LngoKSksIGxyb3VuZGYocG9pbnQueSgpIC0gZm9udE1ldHJpY3MoKS5hc2NlbnQo
KSksIGZyb20sIHRvKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVW5pc2NyaWJlSGVscGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9VbmlzY3JpYmVIZWxwZXIuY3BwCShyZXZp
c2lvbiA5NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1VuaXNjcmliZUhlbHBlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNiBAQCB2
b2lkIFVuaXNjcmliZUhlbHBlcjo6ZHJhdyhHcmFwaGljc0NvbnRlCiAgICAgSEdESU9CSiBvbGRG
b250ID0gMDsKICAgICBpbnQgY3VyWCA9IHg7CiAgICAgYm9vbCBmaXJzdFJ1biA9IHRydWU7Ci0g
ICAgYm9vbCB1c2VXaW5kb3dzRHJhd2luZyA9IHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyhn
cmFwaGljc0NvbnRleHQpOwogCiAgICAgZm9yIChzaXplX3Qgc2NyZWVuSW5kZXggPSAwOyBzY3Jl
ZW5JbmRleCA8IG1fcnVucy5zaXplKCk7IHNjcmVlbkluZGV4KyspIHsKICAgICAgICAgaW50IGl0
ZW1JbmRleCA9IG1fc2NyZWVuT3JkZXJbc2NyZWVuSW5kZXhdOwpAQCAtMzQ4LDQzICszNDcsMjUg
QEAgdm9pZCBVbmlzY3JpYmVIZWxwZXI6OmRyYXcoR3JhcGhpY3NDb250ZQogICAgICAgICAgICAg
Ly8gUGFzcyAwIGluIHdoZW4gdGhlcmUgaXMgbm8ganVzdGlmaWNhdGlvbi4KICAgICAgICAgICAg
IGNvbnN0IGludCoganVzdGlmeSA9IHNoYXBpbmcubV9qdXN0aWZ5LnNpemUoKSA9PSAwID8gMCA6
ICZzaGFwaW5nLm1fanVzdGlmeVtmcm9tR2x5cGhdOwogCi0gICAgICAgICAgICBpZiAodXNlV2lu
ZG93c0RyYXdpbmcpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RSdW4pIHsKLSAgICAgICAg
ICAgICAgICAgICAgb2xkRm9udCA9IFNlbGVjdE9iamVjdChkYywgc2hhcGluZy5tX2hmb250KTsK
LSAgICAgICAgICAgICAgICAgICAgZmlyc3RSdW4gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgU2VsZWN0T2JqZWN0KGRjLCBzaGFwaW5nLm1faGZv
bnQpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBjb25zdCBpbnQqIGFkdmFuY2VzID0g
c2hhcGluZy5tX2p1c3RpZnkuc2l6ZSgpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnNoYXBpbmcubV9qdXN0aWZ5W2Zyb21HbHlwaF0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogJnNoYXBpbmcubV9hZHZhbmNlW2Zyb21HbHlwaF07CiAgICAg
ICAgICAgICAvLyBGb250cyB3aXRoIGRpZmZlcmVudCBhc2NlbnRzIGNhbiBiZSB1c2VkIHRvIHJl
bmRlciBkaWZmZXJlbnQKICAgICAgICAgICAgIC8vIHJ1bnMuICAnQWNyb3NzLXJ1bnMnIHktY29v
cmRpbmF0ZSBjb3JyZWN0aW9uIG5lZWRzIHRvIGJlCiAgICAgICAgICAgICAvLyBhZGp1c3RlZCBm
b3IgZWFjaCBmb250LgogICAgICAgICAgICAgYm9vbCB0ZXh0T3V0T2sgPSBmYWxzZTsKICAgICAg
ICAgICAgIGZvciAoaW50IGV4ZWN1dGlvbnMgPSAwOyBleGVjdXRpb25zIDwgMjsgKytleGVjdXRp
b25zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVzZVdpbmRvd3NEcmF3aW5nKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEhSRVNVTFQgaHIgPSBTY3JpcHRUZXh0T3V0KGRjLCBzaGFwaW5nLm1fc2Ny
aXB0Q2FjaGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1clggKyBpbm5lck9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeSAtIHNoYXBpbmcubV9hc2NlbnRPZmZzZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsICZpdGVtLmEsIDAsIDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fZ2x5
cGhzW2Zyb21HbHlwaF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdseXBoQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZzaGFwaW5nLm1fYWR2YW5jZVtmcm9tR2x5cGhdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX29mZnNldHNbZnJvbUds
eXBoXSk7Ci0gICAgICAgICAgICAgICAgICAgIHRleHRPdXRPayA9IChociA9PSBTX09LKTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBTa1BvaW50IG9yaWdp
bjsKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2luLmZYID0gY3VyWCArICsgaW5uZXJPZmZzZXQ7
Ci0gICAgICAgICAgICAgICAgICAgIG9yaWdpbi5mWSA9IHkgKyBtX2FzY2VudDsKLSAgICAgICAg
ICAgICAgICAgICAgcGFpbnRTa2lhVGV4dChncmFwaGljc0NvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hhcGluZy5tX2hmb250LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdseXBoQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnNoYXBpbmcubV9nbHlwaHNbZnJvbUdseXBoXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmc2hhcGluZy5tX2FkdmFuY2VbZnJvbUdseXBoXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmc2hhcGluZy5tX29mZnNldHNbZnJvbUdseXBoXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3JpZ2luKTsKLSAgICAgICAgICAgICAg
ICAgICAgdGV4dE91dE9rID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgU2tQb2ludCBvcmlnaW47CisgICAgICAgICAgICAgICAgb3JpZ2luLmZYID0gY3VyWCArICsg
aW5uZXJPZmZzZXQ7CisgICAgICAgICAgICAgICAgb3JpZ2luLmZZID0geSArIG1fYXNjZW50Owor
ICAgICAgICAgICAgICAgIHBhaW50U2tpYVRleHQoZ3JhcGhpY3NDb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2hhcGluZy5tX2hmb250LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2x5cGhDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
aGFwaW5nLm1fZ2x5cGhzW2Zyb21HbHlwaF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZHZhbmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFwaW5nLm1fb2Zm
c2V0c1tmcm9tR2x5cGhdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9yaWdpbik7
CisgICAgICAgICAgICAgICAgdGV4dE91dE9rID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgIGlm
ICghdGV4dE91dE9rICYmIDAgPT0gZXhlY3V0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAv
LyBJZiBUZXh0T3V0IGlzIGNhbGxlZCBmcm9tIHRoZSByZW5kZXJlciBpdCBtaWdodCBmYWlsCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHJldmlzaW9uIDk0NTc0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTc3LDE3ICs1NzcsNiBAQCBjb25zdCBTa0JpdG1hcCogUGxhdGZv
cm1Db250ZXh0U2tpYTo6Yml0CiAgICAgcmV0dXJuICZtX2NhbnZhcy0+Z2V0RGV2aWNlKCktPmFj
Y2Vzc0JpdG1hcChmYWxzZSk7CiB9CiAKLWJvb2wgUGxhdGZvcm1Db250ZXh0U2tpYTo6aXNOYXRp
dmVGb250UmVuZGVyaW5nQWxsb3dlZCgpCi17Ci0jaWYgRU5BQkxFKFNLSUFfVEVYVCkKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmIChpc0FjY2VsZXJhdGVkKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXR1cm4gc2tpYTo6U3VwcG9ydHNQbGF0Zm9ybVBhaW50KG1fY2Fu
dmFzKTsKLSNlbmRpZgotfQotCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmdldEltYWdlUmVz
YW1wbGluZ0hpbnQoSW50U2l6ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25zdAog
ewogICAgICpzcmNTaXplID0gbV9pbWFnZVJlc2FtcGxpbmdIaW50U3JjU2l6ZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxh
dGZvcm1Db250ZXh0U2tpYS5oCShyZXZpc2lvbiA5NDU3NCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjcsMTEgKzE2Nyw2IEBAIHB1YmxpYzoKICAgICBib29sIHByaW50aW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmludGluZzsgfQogICAgIHZvaWQgc2V0UHJpbnRpbmcoYm9vbCBwKSB7IG1f
cHJpbnRpbmcgPSBwOyB9CiAKLSAgICAvLyBSZXR1cm5zIGlmIHRoZSBjb250ZXh0IGFsbG93cyBy
ZW5kZXJpbmcgb2YgZm9udHMgdXNpbmcgbmF0aXZlIHBsYXRmb3JtCi0gICAgLy8gQVBJcy4gSWYg
ZmFsc2UgaXMgcmV0dXJuZWQgZm9udCByZW5kZXJpbmcgaXMgcGVyZm9ybWVkIHVzaW5nIHRoZSBz
a2lhCi0gICAgLy8gdGV4dCBkcmF3aW5nIEFQSXMuCi0gICAgYm9vbCBpc05hdGl2ZUZvbnRSZW5k
ZXJpbmdBbGxvd2VkKCk7Ci0KICAgICB2b2lkIGdldEltYWdlUmVzYW1wbGluZ0hpbnQoSW50U2l6
ZSogc3JjU2l6ZSwgRmxvYXRTaXplKiBkc3RTaXplKSBjb25zdDsKICAgICB2b2lkIHNldEltYWdl
UmVzYW1wbGluZ0hpbnQoY29uc3QgSW50U2l6ZSYgc3JjU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBk
c3RTaXplKTsKICAgICB2b2lkIGNsZWFySW1hZ2VSZXNhbXBsaW5nSGludCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdp
bi5jcHAJKHJldmlzaW9uIDk0NTc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDU4ICs0Myw2IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRT
aGFkb3coR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0KQotewotICAgIEZsb2F0U2l6ZSBzaGFkb3dP
ZmZzZXQ7Ci0gICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAg
ICBDb2xvclNwYWNlIHNoYWRvd0NvbG9yU3BhY2U7Ci0KLSAgICBib29sIGhhc1NoYWRvdyA9IGNv
bnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBz
aGFkb3dDb2xvclNwYWNlKTsKLSAgICByZXR1cm4gIWhhc1NoYWRvdyB8fCAoIXNoYWRvd0JsdXIg
JiYgKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KSAmJiAoY29udGV4dC0+ZmlsbENvbG9yKCku
YWxwaGEoKSA9PSAyNTUpKTsKLX0KLQotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmco
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KQotewotICAgIGlmICghd2luZG93c0NhbkhhbmRsZVRl
eHREcmF3aW5nV2l0aG91dFNoYWRvdyhjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gQ2hlY2sgZm9yIHNoYWRvdyBlZmZlY3RzLgotICAgIGlmICghd2luZG93c0Nhbkhh
bmRsZURyYXdUZXh0U2hhZG93KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmdXaXRo
b3V0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkKLXsKLSAgICAvLyBDaGVjayBmb3Ig
bm9uLXRyYW5zbGF0aW9uIHRyYW5zZm9ybXMuIFNvbWV0aW1lcyB6b29tcyB3aWxsIGxvb2sgYmV0
dGVyIGluCi0gICAgLy8gU2tpYSwgYW5kIHNvbWV0aW1lcyBiZXR0ZXIgaW4gV2luZG93cy4gVGhl
IG1haW4gcHJvYmxlbSBpcyB0aGF0IHpvb21pbmcKLSAgICAvLyBpbiB1c2luZyBTa2lhIHdpbGwg
c2hvdyB5b3UgdGhlIGhpbnRlZCBvdXRsaW5lcyBmb3IgdGhlIHNtYWxsZXIgc2l6ZSwKLSAgICAv
LyB3aGljaCBsb29rIHdlaXJkLiBBbGwgZWxzZSBiZWluZyBlcXVhbCwgaXQncyBiZXR0ZXIgdG8g
dXNlIFdpbmRvd3MnIHRleHQKLSAgICAvLyBkcmF3aW5nLCBzbyB3ZSBkb24ndCBjaGVjayBmb3Ig
em9vbXMuCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXggPSBjb250ZXh0LT5nZXRD
VE0oKTsKLSAgICBpZiAobWF0cml4LmIoKSAhPSAwIHx8IG1hdHJpeC5jKCkgIT0gMCkgIC8vIENo
ZWNrIGZvciBza2V3LgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBDaGVjayBmb3Ig
c3Ryb2tlIGVmZmVjdHMuCi0gICAgaWYgKGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRU
ZXh0RHJhd2luZ01vZGUoKSAhPSBUZXh0TW9kZUZpbGwpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIC8vIENoZWNrIGZvciBncmFkaWVudHMuCi0gICAgaWYgKGNvbnRleHQtPmZpbGxHcmFk
aWVudCgpIHx8IGNvbnRleHQtPnN0cm9rZUdyYWRpZW50KCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIC8vIENoZWNrIGZvciBwYXR0ZXJucy4KLSAgICBpZiAoY29udGV4dC0+ZmlsbFBh
dHRlcm4oKSB8fCBjb250ZXh0LT5zdHJva2VQYXR0ZXJuKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmICghY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmlzTmF0aXZlRm9udFJl
bmRlcmluZ0FsbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHNraWFEcmF3VGV4dChTa0NhbnZhcyogY2FudmFzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNrUG9pbnQmIHBvaW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgIFNrUGFpbnQqIHBhaW50LApAQCAtMTAzLDE5ICs1MSwzNCBAQCBzdGF0aWMg
dm9pZCBza2lhRHJhd1RleHQoU2tDYW52YXMqIGNhbnZhCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR09GRlNFVCogb2Zmc2V0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
bnVtR2x5cGhzKQogewotICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIDY0IGdseXBocyBvbiB0aGUg
c3RhY2suIElmIG51bUdseXBocyBpcyBsYXJnZXIsIHRoZSBhcnJheQotICAgIC8vIHdpbGwgZHlu
YW1pY2FsbHkgYWxsb2NhdGUgaXQgc3BhY2UgZm9yIG51bUdseXBoIGdseXBocy4KKyAgICAvLyBS
ZXNlcnZlIHNwYWNlIGZvciA2NCBTa1BvaW50cyBvbiB0aGUgc3RhY2suIElmIG51bUdseXBocyBp
cyBsYXJnZXIsIHRoZSBhcnJheQorICAgIC8vIHdpbGwgZHluYW1pY2FsbHkgYWxsb2NhdGUgaXQg
c3BhY2UgZm9yIG51bUdseXBoIGdseXBocy4gVGhpcyBpcyB1c2VkIHRvIHN0b3JlCisgICAgLy8g
dGhlIGNvbXB1dGVkIHgseSBsb2NhdGlvbnMuIEluIHRoZSBjYXNlIHdoZXJlIG9mZnNldHM9PW51
bGwsIHRoZW4gd2UgdXNlIGl0CisgICAgLy8gdG8gc3RvcmUgKHR3aWNlIGFzIG1hbnkpIFNrU2Nh
bGFycyBmb3IgeFtdCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTG9jYWxHbHlwaE1heCA9IDY0
OwotICAgIFNrQXV0b1NUQXJyYXk8a0xvY2FsR2x5cGhNYXgsIFNrUG9pbnQ+IHBvc1N0b3JhZ2Uo
bnVtR2x5cGhzKTsKLSAgICBTa1BvaW50KiBwb3MgPSBwb3NTdG9yYWdlLmdldCgpOworCiAgICAg
U2tTY2FsYXIgeCA9IHBvaW50LmZYOwogICAgIFNrU2NhbGFyIHkgPSBwb2ludC5mWTsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bUdseXBoczsgaSsrKSB7Ci0gICAgICAgIHBvc1tpXS5zZXQo
eCArIChvZmZzZXRzID8gb2Zmc2V0c1tpXS5kdSA6IDApLAotICAgICAgICAgICAgICAgICAgIHkg
KyAob2Zmc2V0cyA/IG9mZnNldHNbaV0uZHYgOiAwKSk7Ci0gICAgICAgIHggKz0gU2tJbnRUb1Nj
YWxhcihhZHZhbmNlc1tpXSk7CisgICAgaWYgKG9mZnNldHMpIHsKKyAgICAgICAgU2tBdXRvU1RB
cnJheTxrTG9jYWxHbHlwaE1heCwgU2tQb2ludD4gc3RvcmFnZShudW1HbHlwaHMpOworICAgICAg
ICBTa1BvaW50KiBwb3MgPSBzdG9yYWdlLmdldCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bUdseXBoczsgaSsrKSB7CisgICAgICAgICAgICAvLyBHREkgaGFzIGR2IGdvIHVwLCBz
byB3ZSBuZWdhdGUgaXQKKyAgICAgICAgICAgIHBvc1tpXS5zZXQoeCArIFNrSW50VG9TY2FsYXIo
b2Zmc2V0c1tpXS5kdSksCisgICAgICAgICAgICAgICAgICAgICAgIHkgKyAtU2tJbnRUb1NjYWxh
cihvZmZzZXRzW2ldLmR2KSk7CisgICAgICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5j
ZXNbaV0pOworICAgICAgICB9CisgICAgICAgIGNhbnZhcy0+ZHJhd1Bvc1RleHQoZ2x5cGhzLCBu
dW1HbHlwaHMgKiBzaXplb2YodWludDE2X3QpLCBwb3MsICpwYWludCk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgU2tBdXRvU1RBcnJheTxrTG9jYWxHbHlwaE1heCAqIDIsIFNrU2NhbGFyPiBzdG9y
YWdlKG51bUdseXBocyk7CisgICAgICAgIFNrU2NhbGFyKiB4cG9zID0gc3RvcmFnZS5nZXQoKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1HbHlwaHM7IGkrKykgeworICAgICAgICAg
ICAgeHBvc1tpXSA9IHg7CisgICAgICAgICAgICB4ICs9IFNrSW50VG9TY2FsYXIoYWR2YW5jZXNb
aV0pOworICAgICAgICB9CisgICAgICAgIGNhbnZhcy0+ZHJhd1Bvc1RleHRIKGdseXBocywgbnVt
R2x5cGhzICogc2l6ZW9mKHVpbnQxNl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eHBvcywgeSwgKnBhaW50KTsKICAgICB9Ci0gICAgY2FudmFzLT5kcmF3UG9zVGV4dChnbHlwaHMs
IG51bUdseXBocyAqIHNpemVvZih1aW50MTZfdCksIHBvcywgKnBhaW50KTsKIH0KIAogc3RhdGlj
IGJvb2wgaXNDYW52YXNNdWx0aUxheWVyZWQoU2tDYW52YXMqIGNhbnZhcykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmgJ
KHJldmlzaW9uIDk0NTc0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9Ta2lhRm9udFdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwzMyArMzksNiBAQCBjbGFzcyBT
a1BvaW50OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1j
bGFzcyBQbGF0Zm9ybUNvbnRleHRTa2lhOwotCi0vLyBUaGUgZnVuY3Rpb25zIGJlbG93IGFyZSB1
c2VkIGZvciBtb3JlIGNvbXBsZXggZm9udCBkcmF3aW5nIChlZmZlY3RzIHN1Y2ggYXMKLS8vIHN0
cm9raW5nIGFuZCBtb3JlIGNvbXBsZXggdHJhbnNmb3JtcykgdGhhbiBXaW5kb3dzIHN1cHBvcnRz
IGRpcmVjdGx5LiAgU2luY2UgCi0vLyBXaW5kb3dzIGRyYXdpbmcgaXMgZmFzdGVyIHlvdSBzaG91
bGQgdXNlIHdpbmRvd3NDYW5IYW5kbGVUZXh0RHJhd2luZyBmaXJzdCB0byAKLS8vIGNoZWNrIGlm
IHVzaW5nIFNraWEgaXMgcmVxdWlyZWQgYXQgYWxsLgotLy8gTm90ZSB0aGF0IHRoZSB0ZXh0IHdp
bGwgbG9vayBkaWZmZXJlbnQgKG5vIENsZWFyVHlwZSkgc28gdGhpcyBzaG91bGQgb25seSBiZQot
Ly8gdXNlZCB3aGVuIG5lY2Vzc2FyeS4KLS8vCi0vLyBXaGVuIHlvdSBjYWxsIGEgU2tpYSogdGV4
dCBkcmF3aW5nIGZ1bmN0aW9uLCB2YXJpb3VzIGdseXBoIG91dGxpbmVzIHdpbGwgYmUKLS8vIGNh
Y2hlZC4gQXMgYSByZXN1bHQsIHlvdSBzaG91bGQgY2FsbCBTa2lhV2luT3V0bGluZUNhY2hlOjpy
ZW1vdmVQYXRoc0ZvckZvbnQKLS8vIHdoZW4gdGhlIGZvbnQgaXMgZGVzdHJveWVkIHNvIHRoYXQg
dGhlIGNhY2hlIGRvZXMgbm90IG91dGxpdmUgdGhlIGZvbnQgKHNpbmNlCi0vLyB0aGUgSEZPTlRz
IGFyZSByZWN5Y2xlZCkuCi0vLwotLy8gUmVtZW1iZXIgdGhhdCBTa2lhJ3MgdGV4dCBkcmF3aW5n
IG9yaWdpbiBpcyB0aGUgYmFzZWxpbmUsIGxpa2UgV2ViS2l0LCBub3QKLS8vIHRoZSB0b3AsIGxp
a2UgV2luZG93cy4KLQotLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBmaWxsQ29sb3IgYW5kIHNoYWRv
d0NvbG9yIGFyZSBvcGFxdWUgYW5kIHRoZSB0ZXh0LXNoYWRvdwotLy8gaXMgbm90IGJsdXJyZWQu
Ci1ib29sIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdyhHcmFwaGljc0NvbnRleHQqKTsK
LQotLy8gUmV0dXJucyB0cnVlIGlmIGFkdmFuY2VkIGZvbnQgcmVuZGVyaW5nIGlzIHJlY29tbWVu
ZGVkLgotYm9vbCB3aW5kb3dzQ2FuSGFuZGxlVGV4dERyYXdpbmcoR3JhcGhpY3NDb250ZXh0Kik7
Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiBhZHZhbmNlZCBmb250IHJlbmRlcmluZyBpcyByZWNvbW1l
bmRlZCBpZiBzaGFkb3dzIGFyZQotLy8gZGlzcmVnYXJkZWQuCi1ib29sIHdpbmRvd3NDYW5IYW5k
bGVUZXh0RHJhd2luZ1dpdGhvdXRTaGFkb3coR3JhcGhpY3NDb250ZXh0Kik7CiAKIC8vIE5vdGUg
dGhhdCB0aGUgb2Zmc2V0cyBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuICBJZiBub3QgTlVMTCBpdCBy
ZXByZXNlbnRzIGEKIC8vIHBlciBnbHlwaCBvZmZzZXQgKHN1Y2ggYXMgcmV0dXJuZWQgYnkgU2Ny
aXB0UGxhY2UgV2luZG93cyBBUEkgZnVuY3Rpb24pLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ1NzQp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBA
QAorMjAxMS0wOS0wNiAgTWlrZSBSZWVkICA8cmVlZEBnb29nbGUuY29tPgorCisgICAgICAgIFtz
a2lhXSBuZXZlciBkcmF3IHdpdGggR0RJLCBzbyB0aGF0IGFsbCB0ZXh0IGNhbiBiZSBncHUtYWNj
ZWxlcmF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1MjAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDktMDYg
IENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW01h
Y10gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA5NDU3NCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTk3OSw2ICsxOTc5LDgzIEBAIEJVR0NSNDkwMjkgOiBmYXN0L2pzL29i
amVjdC1saXRlcmFsLXN5bnQKIAogQlVHQ1I0ODg1OSBXSU4gOiBmYXN0L2lubGluZS9jb250aW51
YXRpb24tb3V0bGluZXMtd2l0aC1sYXllcnMtMi5odG1sID0gSU1BR0UrVEVYVAogCisvLyBUaGVz
ZSBzaG91bGQgYmUgcmViYXNlbGluZWQgYWZ0ZXIgdGhlIHBhdGNoIGxhbmRzLCBhcyB3ZSBhcmUg
bm93IGRyYXdpbmcKKy8vIGFsbCB0ZXh0IHdpdGggc2tpYSAoaW5zdGVhZCBvZiBnZGkpIGFuZCBp
biB0aGVzZSBjYXNlcywgd2UgaGF2ZSBkaWZmZXJlbmNlcworLy8gaW4gYW50aWFsaWFzaW5nIChk
cnQgc3BlY2lmaWMpIG9yIGluIGZyYWN0aW9uYWwtYmFzZWxpbmVzIChnZGkgcm91bmRzIGluIHNy
YworLy8gc3BhY2UsIHNraWEgcm91bmRzIGluIGRldmljZXMgc3BhY2UgCitCVUdXSzY1MjAzIFdJ
TiA6IGZhc3QvYm9yZGVycy9ib3JkZXItYW50aWFsaWFzaW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBmYXN0L3JlZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3ZlcmZsb3ctaGlkZGVuLmh0
bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3JlcGFpbnQvcmVmbGVjdGlvbi1yZWRy
YXcuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9jb21wbGV4LXRleHQt
b3BhY2l0eS5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvY29tcGxleC1jaGFyYWN0ZXItYmFzZWQtZmFsbGJhY2suaHRtbCA9IElNQUdFCitCVUdX
SzY1MjAzIFdJTiA6IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2RhbmRhLXNwYWNlLmh0bWwgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9oaW5kaS1zcGFj
aW5nLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBmYXN0L3RleHQvaW50ZXJuYXRpb25h
bC9raG1lci1zZWxlY3Rpb24uaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IGZhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL3RoYWktYmFodC1zcGFjZS5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMg
V0lOIDogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvdGhhaS1saW5lLWJyZWFrcy5odG1sID0gSU1B
R0UKK0JVR1dLNjUyMDMgV0lOIDogbWVkaWEvYXVkaW8tcmVwYWludC5odG1sID0gSU1BR0UKK0JV
R1dLNjUyMDMgV0lOIDogcGxhdGZvcm0vd2luL2Zhc3QvdGV4dC91bmlzY3JpYmUtbWlzc2luZy1n
bHlwaC5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1JMThOL3RzcGFuLWRp
ckxUUi11Yk92ZXJyaWRlLWluLXJ0bC1jb250ZXh0LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJ
TiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tMzctdC5zdmcgPSBJTUFHRQorQlVHV0s2
NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTM5LXQuc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS00MC10LnN2ZyA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNDEt
dC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1l
bGVtLTQ2LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2Fu
aW1hdGUtZWxlbS02MC10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZH
LTEuMS9hbmltYXRlLWVsZW0tNjEtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
VzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTYyLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02My10LnN2ZyA9IElNQUdFCitCVUdXSzY1
MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjQtdC5zdmcgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY1LXQuc3ZnID0g
SU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02Ni10
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVs
ZW0tNjctdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5p
bWF0ZS1lbGVtLTY4LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkct
MS4xL2FuaW1hdGUtZWxlbS02OS10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9X
M0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNzAtdC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4g
OiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTgxLXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUy
MDMgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS04Mi10LnN2ZyA9IElNQUdFCitC
VUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tODMtdC5zdmcgPSBJ
TUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvcHNlcnZlcnMtZ3JhZC0wNy1i
LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9zdHJ1Y3QtZnJh
Zy0wMi10LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0
LWFsaWduLTA0LWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL1czQy1TVkctMS4x
L3RleHQtYWxpZ24tMDUtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvVzNDLVNW
Ry0xLjEvdGV4dC1hbGlnbi0wNi1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9X
M0MtU1ZHLTEuMS90ZXh0LXBhdGgtMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvVzNDLVNWRy0xLjEvdGV4dC10ZXh0LTA1LXQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL2FzLWJhY2tncm91bmQtaW1hZ2UvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQuaHRt
bCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9hcy1pbWFnZS9hbmltYXRlZC1zdmctYXMt
aW1hZ2UuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay9maWx0ZXJzL2Zp
bHRlclJlZ2lvbnMuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3RleHQv
bG9uZ1RleHRPblBhdGguc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3Rl
eHQvdGV4dEFuY2hvci5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4
dC90ZXh0RmVhdHVyZXMuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2JhdGlrL3Rl
eHQvdGV4dExheW91dC5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0aWsvdGV4
dC90ZXh0UENEQVRBLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90ZXh0
L3RleHRQcm9wZXJ0aWVzLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9iYXRpay90
ZXh0L3RleHRQcm9wZXJ0aWVzMi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvYmF0
aWsvdGV4dC92ZXJ0aWNhbFRleHQuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL2Nh
cnRvLm5ldC90ZXh0Ym94LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jYXJ0by5u
ZXQvd2luZG93LnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jc3MvdGV4dC1zaGFk
b3ctbXVsdGlwbGUueGh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvY3VzdG9tL2pz
LWxhdGUtY2xpcFBhdGgtYW5kLW9iamVjdC1jcmVhdGlvbi5zdmcgPSBJTUFHRQorQlVHV0s2NTIw
MyBXSU4gOiBzdmcvY3VzdG9tL2pzLWxhdGUtY2xpcFBhdGgtY3JlYXRpb24uc3ZnID0gSU1BR0UK
K0JVR1dLNjUyMDMgV0lOIDogc3ZnL2N1c3RvbS9saW5raW5nLWEtMDMtYi12aWV3Qm94LnN2ZyA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9jdXN0b20vbGlua2luZy11cmktMDEtYi5zdmcg
PSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvZHluYW1pYy11cGRhdGVzL1NWR1RleHRFbGVt
ZW50LWRvbS1sZW5ndGhBZGp1c3QtYXR0ci5odG1sID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDog
c3ZnL2R5bmFtaWMtdXBkYXRlcy9TVkdUZXh0RWxlbWVudC1zdmdkb20tbGVuZ3RoQWRqdXN0LXBy
b3AuaHRtbCA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy9oaXhpZS9taXhlZC8wMDkueG1s
ID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lOIDogc3ZnL3RleHQvZm9yZWlnbk9iamVjdC10ZXh0LWNs
aXBwaW5nLWJ1Zy54bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvdGV4dC9zY2FsaW5n
LWZvbnQtd2l0aC1nZW9tZXRyaWMtcHJlY2lzaW9uLmh0bWwgPSBJTUFHRQorQlVHV0s2NTIwMyBX
SU4gOiBzdmcvdGV4dC90ZXh0LWFsaWduLTAxLWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUyMDMgV0lO
IDogc3ZnL3RleHQvdGV4dC1hbGlnbi0wNS1iLnN2ZyA9IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6
IHN2Zy90ZXh0L3RleHQtYWxpZ24tMDYtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBz
dmcvdGV4dC90ZXh0LXBhdGgtMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
dGV4dC90ZXh0UGF0aEJvdW5kc0J1Zy5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcv
em9vbS9wYWdlL3pvb20tY29vcmRzLXZpZXdhdHRyLTAxLWIuc3ZnID0gSU1BR0UKK0JVR1dLNjUy
MDMgV0lOIDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGllLW1peGVkLTAwOC54bWwgPSBJTUFHRQor
QlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS9wYWdlL3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9
IElNQUdFCitCVUdXSzY1MjAzIFdJTiA6IHN2Zy96b29tL3RleHQvem9vbS1jb29yZHMtdmlld2F0
dHItMDEtYi5zdmcgPSBJTUFHRQorQlVHV0s2NTIwMyBXSU4gOiBzdmcvem9vbS90ZXh0L3pvb20t
aGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdFCisKIC8vIFRoZXNlIHRlc3RzIGFsbCBmYWlsIGJl
Y2F1c2UgdGhlIGV4cGVjdGVkIG91dHB1dCBpcyB3cm9uZy4gVGhlCiAvLyByZWFzb24gaXMgdGhh
dCBKU0MgZG9lcyBub3QgY3VycmVudGx5IGltcGxlbWVudCBGdW5jdGlvbi5wcm90b3R5cGUuYmlu
ZAogLy8gVGhlc2UgdGVzdCBoYXMgaW50ZW50aW9uYWxseSBiZWVuIG1hcmtlZCBhcyBGQUlMLCB3
aGljaCBtYWtlcyBpdCBlYXN5Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>